Jquery $ .ajax()调用webmethod

时间:2010-02-17 16:38:31

标签: jquery ajax json

我以前从未使用$ .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,瑞典

1 个答案:

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