(JSON.stringify)---> (asp.net函数)----> (JSON.parse)----> Microsoft JScript运行时错误:字符无效

时间:2012-05-22 05:30:42

标签: asp.net json serialization

我有一个简单的javascript对象。我用JSON.stringify序列化它我把它发送到一个只返回它的asp.net web函数。但是当我尝试使用JSON解析返回的字符串时,我得到了

Microsoft JScript运行时错误:字符无效

 $(document).ready(function() {
          $.ajax({
              type: "POST",
              url: "test.aspx/PassBackdata",
              contentType: "application/json; charset=utf-8",
              data: "{'args': '" + JSON.stringify(MyObject) + "'}",
                   dataType: "json",
                   success: AjaxSucceeded,
                   error: AjaxFailed
               }); 
           });
           function AjaxSucceeded(result) {

            var a=JSON.parse(result);

           }
           function AjaxFailed(result) {
               alert(result.status + ' ' + result.statusText);
           }  


      };




  <System.Web.Services.WebMethod()> _
    Public Shared Function PassBackdata(args As String)
            Return args
     End Function

我该如何解决这个问题?谢谢

4 个答案:

答案 0 :(得分:3)

如果succes函数发生错误,您可能需要检查结果对象的格式。我不得不使用var a=JSON.parse(result.d);,因为这是webservice返回的方式,它不是直接的json,而是带有“d”字段的对象,它是json。

为了检查结果,我使用fiddler。

答案 1 :(得分:0)

而不是:

"{'args': '" + JSON.stringify(MyObject) + "'}"

试试这个:

JSON.stringify({args: MyObject})

不要自己做JavaScript可以为你做的事情;)

答案 2 :(得分:0)

然而,知道MyObject的样子会有所帮助:

JSON必须具有双引号的键名,而不是单引号。尝试这样的事情:

$(document).ready(function() {
          $.ajax({
              type: "POST",
              url: "test.aspx/PassBackdata",
              contentType: "application/json; charset=utf-8",
              data: JSON.stringify({args:MyObject}),
                   dataType: "json",
                   success: AjaxSucceeded,
                   error: AjaxFailed
               }); 
           });
           function AjaxSucceeded(result) {

            var a=JSON.parse(result);

           }
           function AjaxFailed(result) {
               alert(result.status + ' ' + result.statusText);
           }  


      };

答案 3 :(得分:0)

如果我这样做:JSON.parse(result.d)而不是JSON.parse(result)它有效。

function AjaxSucceeded(result) {

    var a=JSON.parse(result.d);

}

不知道为什么