我正在学习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)
{
}
答案 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);
}
});