我正在使用这样的AJAX帖子:
$.ajax({
type: "POST",
url: "/AJAXServices.aspx/" + method,
data: params,
contentType: "application/json; charset=utf-8",
dataType: "json",
success: function(data) {
successfunc();
},
error: function(data) {
errorfunc();
}
});
当我使用变量" params"像这样:
var params = '{"QuestionID":"' + UpdateQuestion_ID + '", "NewText":"' + newText + '"}';
有效。
但是当我改变它时:
var params = { QuestionID: UpdateQuestion_ID, NewText: newText };
这会在服务器端抛出内部服务器错误:
无法加载资源:服务器响应状态为500 (内部服务器错误)
服务器端方法:
[WebMethod]
public static void UpdateQuestion(string QuestionID, string NewText)
{
....
}
有什么想法吗?
答案 0 :(得分:1)
我的第一种情况params
是一个字符串,而在第二种情况下params
是一个对象。
我猜服务器需要一个有效的json字符串。确保params
是一个对象,并在发送之前使用JSON.stringify()
将其转换为有效的JSON字符串。
$.ajax({
...
data: JSON.stringify(params),
...
});
答案 1 :(得分:1)
JavaScript对象和JSON看起来非常相似,但差别很小。
有效的JSON必须将密钥包装在“”内,但可以在没有“”的情况下编写JS对象密钥。
下面的示例是有效的JS对象,但无效的JSON :
{ 名称:“拉维”, 国家:“印度” }
因此,下面是相同的有效JSON:
{ “名字”:“拉维”, “国家”:“印度” }
此外,服务器端,它会因为它是InValid JSON而中断。
您可以在http://www.jsoneditoronline.org/
验证您的JSON注意:您可以使用
将任何JS对象转换为有效的JSONJSON.stringify(JavaScript_Object);
示例:
var a = {name:“Ravi”,country:“India”}
从JS-Obj转换为JSON
var b = JSON.stringify(a);
现在,var b是一个有效的JSON。
输出:“{”name“:”Ravi“,”country“:”India“}”