JSON数据可以作为字符串,但会引发内部错误时,对象

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), 
    ... 
}); 
+0

作品。谢谢@rckrd –

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。

输出: “{” 名 “:” 拉维 “ ”国“: ”印度“}”