JSON数据可以作为字符串,但会引发内部错误时,对象
问题描述:
我使用AJAX后是这样的:JSON数据可以作为字符串,但会引发内部错误时,对象
$.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)
{
....
}
任何想法?
答
我的第一个案例params
是一个字符串,在第二个案例中params
是一个对象。
我猜服务器需要一个有效的json字符串。确保params
是一个对象,并在发送之前使用JSON.stringify()
将其转换为有效的JSON字符串。
$.ajax({
...
data: JSON.stringify(params),
...
});
答
JavaScript对象和JSON看起来非常相似,但有一点区别。 “
一个有效的JSON必须包含在内部的密钥”“,但是一个JS对象密钥可以不用”“写入。
下面的例子是有效的JS对象,但无效的JSON:
{ 名称: “拉维”, 国家: “印度” }
所以,下面是一个有效的JSON相同:
{ “name”:“Ravi”, “国”: “印度” }
此外,服务器端,这将打破,因为它是一个无效的JSON。
您可以在http://www.jsoneditoronline.org/
注意验证您的JSON:您可以使用
JSON任何JS对象转换为有效的JSON。字符串化(JavaScript_Object);
实施例:
VAR一个= {名: “拉维”,国家: “印度”}从JS-的OBJ
转换为JSON
变种b = JSON.stringify(a);
现在,var b是一个有效的JSON。
输出: “{” 名 “:” 拉维 “ ”国“: ”印度“}”
作品。谢谢@rckrd –