追风逐月

提供网络赚钱、网赚经验、网赚工具、SEO、国外主机信息
订阅追风逐月博客feed
订阅到google 订阅到哪吒
订阅到鲜果 订阅到抓虾
* 更多订阅本站方式请看 订阅帮助

使用Jquery调用Asp.net生成的webservice

2007年08月08日 • 追风逐月 • 分类: 技术开发, 网站建设

厌倦了very very不爽的ms ajax.net类库,终于决定要使用jquery把它替换掉。
Jquery的好处,就不用说了,简单,方便,人见人爱,车见车载啊… …
ms ajax调用的方式一般为
[c#]
Service.方法名(参数,结果处理函数,失败处理函数,其他参数);
[/c#]
使用firebug监控,发现
提交方式为: post
调用地址为:/Service/Service.asmx/方法名 如 /Service/Service.asmx/GetSample
其参数格式如下

‘{name:value,name1:value1,…}’

也就是说是javascript object 的json字符串格式

Content-Type=application/json; charset=utf-8

这样,我们就可以用jquery来模拟ms ajax的调用过程了

首先设置Ajax环境

PLAIN TEXT

JavaScript:

  1. // write by <a href=”http://www.chyni.cn” class=”alinks_links” onclick=”return alinks_click(this);” title=”" style=”padding-right: 13px; background: url(http://www.chyni.cn/wp-content/plugins/alinks/images/external.png) center right no-repeat;” rel=”external”>chyni</a>

  2. $(document).ready(function() {

  3.  

  4. $.ajaxSetup( {

  5. url: “/Service/Service.asmx/”,

  6. global: false,

  7. dataType:“json”,

  8. contentType:‘application/json; charset=utf-8′,

  9. type: “POST”

  10. } );

  11. }

其次,因为jquery没有直接提供postJSON方法,于是自己实现了一个$.postJSON()方法
其中使用了json.js插件,该插件地址国内无法访问,摘录代码如下

PLAIN TEXT

JavaScript:

  1. //json.js

  2. //modified by chyni

  3. (function ($) {

  4. var m = {

  5. \b: \\b’,

  6. \t: \\t’,

  7. \n: \\n’,

  8. \f: \\f’,

  9. \r: \\r’,

  10. ‘”‘ : \\“‘,

  11. \\: \\\\

  12. },

  13. s = {

  14. ‘array’: function (x) {

  15. var a = [‘[’], b, f, i, l = x.length, v;

  16. for (i = 0; i <l; i += 1) {

  17. v = x[i];

  18. f = s[typeof v];

  19. if (f) {

  20. v = f(v);

  21. if (typeof v == ’string’) {

  22. if (b) {

  23. a[a.length] = ‘,’;

  24. }

  25. a[a.length] = v;

  26. b = true;

  27. }

  28. }

  29. }

  30. a[a.length] = ‘]’;

  31. return a.join();

  32. },

  33. ‘boolean’: function (x) {

  34. return String(x);

  35. },

  36. ‘null’: function (x) {

  37. return “null”;

  38. },

  39. ‘number’: function (x) {

  40. return isFinite(x) ? String(x) : ‘null’;

  41. },

  42. ‘object’: function (x) {

  43. if (x) {

  44. if (x instanceof Array) {

  45. return s.array(x);

  46. }

  47. var a = [‘{’], b, f, i, v;

  48. for (i in x) {

  49. v = x[i];

  50. f = s[typeof v];

  51. if (f) {

  52. v = f(v);

  53. if (typeof v == ’string’) {

  54. if (b) {

  55. a[a.length] = ‘,’;

  56. }

  57. a.push(s.string(i), ‘:’, v);

  58. b = true;

  59. }

  60. }

  61. }

  62. a[a.length] = ‘}’;

  63. return a.join();

  64. }

  65. return ‘null’;

  66. },

  67. ’string’: function (x) {

  68. if (/[\\\x00-\x1f]/.test(x)) {

  69. x = x.replace(/([\x00-\x1f\\])/g, function(a, b) {

  70. var c = m[b];

  71. if (c) {

  72. return c;

  73. }

  74. c = b.charCodeAt();

  75. return \\u00′ +

  76. Math.floor(c / 16).toString(16) +

  77. (c % 16).toString(16);

  78. });

  79. }

  80. return ‘”‘ + x + ‘”‘;

  81. }

  82. };

  83.  

  84. $.toJSON = function(v) {

  85. var f = isNaN(v) ? s[typeof v] : s[‘number’];

  86. if (f) return f(v);

  87. };

  88.  

  89. $.parseJSON = function(v, safe) {

  90. if (safe === undefined) safe = $.parseJSON.safe;

  91. if (safe && !/^(“(\\.|[^”\\\n\r])*?“|[,:{}\[\]0-9.\-+Eaeflnr-u \n\r\t])+?$/.test(v))

  92. return undefined;

  93. return eval(’('+v+’)');

  94. };

  95. $.parseJSON.safe = false;

  96. })(jQuery);

  97. $.postJOSN=function(url, data, callback )

  98. { return $.post(url, $.toJSON(data),function(ret){callback($.parseJSON(ret,true)); });

  99. }

这样,我们就可以如下方便的调用asp.net 的 webservice了
$.postJOSN(’/Service/Service.asmx/GetSample’,
{”msg”:’我爱追风‘},
function(data){GetSampleResult(data,itype);}
);
再也不用忍受臃肿的Microsoft AJAX Framework了,这下天下太平了。

标签: , ,
本文链接:http://chyni.com/site-builder/jquery-asmx.html

你可能还喜欢



发表你的意见