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

If the error occurs on succes function, you may want to check the format of the result object. I had to use var a=JSON.parse(result.d); because that is how it was returned by webservice, it wasn't a direct json, but an object with a "d" field which was the json.

For checking the result I use fiddler.

于 2012-05-22T06:46:02.387 に答える
0

それ以外の:

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

これを試して:

JSON.stringify({args: MyObject})

JavaScript でできることを自分でやらないでください ;)

于 2012-05-22T05:35:09.967 に答える
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 に答える