Jquery Ajax post方法给出null值

时间:2015-10-14 08:53:06

标签: javascript jquery asp.net ajax asp.net-ajax

我正在学习Jquery Ajax方法。我尝试发布一个json字符串,它使用$ .post方法工作但不使用$ .Ajax方法。它给出了500错误。请给出一些建议

---- $ .post ---方法//工作

   $.post("About.aspx?type=Test", { 'Data': '[{"Key":"454","Value":["1","3"]},{"Key":"496","Value":["1","2","3"]}]' }, function (result) {
                alert(result.d);
            });
   ----c#-----
    public void add()
    {
        string value = Request.Form["Data"];
    }

------ $ .Ajax post --------- method //不工作。但 如果我将数据传递为" {'数据':' 1'}" - 正在工作

      $.ajax({
                type: "POST",
                url: "Contact.aspx/add",
                dataType: "json",
                data:  "{'Data': '[{'Key':'454','Value':['1','3']},{'Key':'496','Value':['1','2','3']}]'}",
                contentType: "application/json; charset=utf-8",
                success: function (response) {

                },

                error: function (msg) {
                    alert(msg.status);
                }
            });
  -----c#----
   [WebMethod]
    public static void add( string Data)
    {
    }

1 个答案:

答案 0 :(得分:0)

<强>更新

我可能误解了你想要的东西 - 所以如果你真的想把json发送到服务器 作为字符串 ,那么你的data应该看起来像这个:

data: {
    roleList : JSON.stringify([{"Key":"454","Value":["1","3"]},{"Key":"496","Value":["1","2","3"]}])
},

好像你想要roleList作为你的POST变量名; 这里使用内置函数JSON.stringify()要容易得多。现在几乎每个浏览器都有它

有关contentType的其他信息:
contentType给了我奇怪的问题。似乎你最好不要使用它,因为你应该没有使用默认设置。有关详细信息,请参阅此问题:Cannot set content-type to 'application/json' in jQuery.ajax

原始回答:
JSON您的data值无效JSON但只是一个字符串。加上contentType无效。没有设置contentType并只使用默认设置,你没事的那样:

$.ajax({
    type: "POST",
    url: "Contact.aspx/add",
    dataType: "json",
    data: {roleList:[{"Key":"454","Value":["1","3"]},{"Key":"496","Value":["1","2","3"]}]},
    //contentType: "application/json; charset=utf-8",
    success: function (response) {
        console.log(response);
    },

    error: function (msg) {
        console.log("error: ", msg.status);
    }
});