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就会变成一个字符串数组。