1

我有一个简单的 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

4 回答 4

3

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

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

于 2012-05-22T06:46:02.387 回答
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);
           }  


      };
于 2012-05-22T05:36:04.527 回答
0

如果我这样做:JSON.parse(result.d)而不是JSON.parse(result)它的作品。

function AjaxSucceeded(result) {

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

}

不知道为什么

于 2012-05-23T09:17:15.010 回答
0

代替:

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

尝试这个:

JSON.stringify({args: MyObject})

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

于 2012-05-22T05:35:09.967 回答