我以前从未使用$ .ajax(),如果你看到任何输入错误请告诉我;)
我使用jQuery $ .ajax()来调用带有JSON的webmethod。
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<string,bool> dict) {
...
}
保存我的复选框文本值以及是否已选中。
我对JSON实际上的工作方式并不是最模糊的,我所知道的是我必须尽快完成这项工作。
可能必须使用某种多维javascripts数组。如果您对此问题的最佳方法有任何想法,我会很高兴!
/ Daniel Svensson,瑞典
答案 0 :(得分:1)
如果你使你的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就会变成一个字符串数组。