2012-02-26 134 views
0

我正在使用jquery將json字符串發送到ASMX Web服務。 Web服務方法的定義背後的代碼如下所示:asp.net web服務:在json內發送json

[WebMethod(EnableSession = true)] 
public string DoMyProcess(string TheDataID, string TheUserID, string TheData) { 

字符串海圖是我序列使用

var TheData = JSON.stringify(MyObject); 

發送的JSON看起來像這樣jQuery的部分JavaScript對象MyObject來:

var AjaxData = '{"TheDatatID":"' + DatatID + '","TheUserID":"' + UserID + '","TheData":"' + TheData + '"}'; 

    $.ajax({ 
     type: "POST", 
     url: "../WebServices/MyServices.asmx/DoMyProcess", 
     data: AjaxData, 
     contentType: "application/json; charset=utf-8", 
     dataType: "json", 
     cache: "false", 
     success: RequestSuccess, 
     error: RequestError 
    }); 

就這樣,我得到一個500錯誤,調試器甚至不會在VS中觸發。但是,如果我替換var TheData = JSON.stringify(MyObject);與

var TheData = "test"; 

我能夠讓調試器斷開文件後面的代碼的第一行。

這必須是在json中發送json時發生問題的結果;它應該工作,但它不會。我錯過了什麼?

+0

當你的Web方法通過設置'VAR海圖=‘測試’在調試器,以提高'是其他參數正確填充(在服務器端),比如'TheDataID'? – ironsam 2012-02-26 18:15:18

+0

你有沒有試過在AjaxData上調用stringify? 'data:JSON.stringify(AjaxData),' – 2012-02-26 18:36:59

+0

TheData被指定爲string not object。嘗試將TheData聲明爲對象(MyObject?)。 – Jules 2012-02-26 21:54:16

回答

0

首先,你可以使用fiddler爲更多細節錯誤500

但我認爲錯誤是在JSON發送JSON。您必須替換字符\「到\」

例如:

var TheData = JSON.stringify(MyObject).replace(new RegExp('\"', 'g'),'\\"');