Jquery $ .ajax()调用webmethod
我以前从未使用$ .ajax(),如果你看到任何错误,请告诉我;)
我使用jQuery $ .ajax()来调用带有JSON的web方法。
webmethod的简单定义应如下所示:
[WebMethod] public static bool MyMethod(string a, string b, string c) { ... }
$ .ajax()中data参数的值为:
myData =>“’a’:’val_a’,’b’:’val_b’,’c’:’val_c’”
这是我的ajax电话:
$.ajax({ type: "POST", url: "AspDotNetPage.aspx/MyMethod", data: "{"+myData+"}", contentType: "application/json; charset=utf-8", dataType: "json", success: function(msg) { alert(msg); } });
现在棘手的部分来了。 我需要在webmethod中添加一个额外的参数。 我必须向我的webmethod发送某个div中的所有复选框,它们的名称以及它们是否被选中。 我有Jquery代码来选择这些值。 这是我在正常的代码隐藏编程中看到的另外一个参数
[WebMethod] public static bool MyMethod(string a, string b, string c, Dictionary dict) { ... }
保存我的复选框文本值以及是否已选中。
我不知道JSON实际上是如何工作的,我所知道的是我必须尽快完成这项工作。
可能必须使用某种多维javascripts数组。 如果您对此问题的最佳方法有任何想法,我会很高兴!
/ Daniel Svensson,瑞典
如果你使你的bool可以为空,你可以在你的所有值上使用.serialize()方法,并且方法将忽略不在发布数据中的复选框:
[WebMethod] public static bool MyMethod(string a, string b, string c, bool? chkbox1, bool? chkbox2....) { ... }
你需要加一个布尔? 页面上所有可能的复选框的参数。 这是提供良好测试方法等的最佳方式。但是,如果你真的想要,你可以为数据添加另一个对象,例如
data: { 'a':'val_a', 'b':'val_b','c':'val_c', 'dict': { 'chk1', 'chk2', 'chk3' } }
其中chk1,chk2,chk3是一个你已经选中复选框的数组,你的dict param就会变成一个字符串数组。