2012-02-26 13 views
0

jsonを使用してjson文字列をASMX Webサービスに送信しています。 Webサービスメソッド定義の背後にあるコードは次のようになります。asp.net Webサービス:json内でjsonを送信

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

文字列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

あなたは 'VARのTheData =『test』を設定することで、デバッガで調達するウェブメソッドを取得すると、'他のパラメータが適切に装着されています(サーバー側で) 'TheDataID'のように? – ironsam

+0

AjaxDataでstringifyを呼び出そうとしましたか? 'data:JSON.stringify(AjaxData)、 ' –

+0

TheDataはstring not objectとして指定されています。 TheDataをオブジェクト(MyObject?)として宣言してください。 – Jules

答えて

0

最初に、あなたはエラー500

の詳細についてはfiddlerを使用することができますしかし、私は間違いをJSONでJSONを送ることになると思います。あなたは「\に」文字\を交換する必要があります

例:

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

関連する問題