2012-05-22 45 views
1

我有一個簡單的JavaScript對象。我使用JSON.stringify將其序列化。我將它發送給一個只返回它的asp.net web函數。但是,當我嘗試解析返回的字符串與JSON我得到(JSON.stringify)--->(asp.net功能)---->(JSON.parse)---->微軟JScript運行時錯誤:無效字符

微軟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 

我怎樣才能解決這個問題?謝謝

回答

0

相反的:

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

試試這個:

JSON.stringify({args: MyObject}) 

不要做自己什麼JavaScript可以爲你做什麼;)

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); 
      } 


     }; 
+0

數據:JSON.stringify({ARGS:爲MyObject})我得到一個錯誤500錯誤內部服務器。 奇怪的是,我發送的字符串與我收到的字符串完全一樣。我不明白無效的字符錯誤消息。 – Marky68

+0

與數據:JSON.stringify({args:MyObject})我得到一個錯誤500錯誤內部服務器。 奇怪的是,我發送的字符串與我收到的字符串完全一樣。我不明白無效的字符錯誤消息。 如果我立即對所有工作進行串聯和解析。 如果我發回字符串到一個asp.net函數,並且函數將它發送回原樣,即使它看起來相同,也不能使用JSON分析接收到的字符串 可能與utf-8有關,如果我這樣做 – Marky68

+0

: JSON.parse(result.d)它的工作原理。 – Marky68

3

如果錯誤發生在succes函數上,您可能需要檢查結果對象的格式。我不得不使用var a=JSON.parse(result.d);,因爲它是由webservice返回的,它不是直接的json,而是帶有「d」字段的對象,它是json。

爲了檢查結果我使用了提琴手。

+0

我也體驗過它!奇怪的! –

0

如果我這樣做:的JSON.parse(result.d)代替JSON.parse(result)它的工作原理。

function AjaxSucceeded(result) { 

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

} 

不知道爲什麼

相關問題