2012-02-26 139 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'),'\\"');