Jquery “获取错误”';JSON';是未定义的“;在Web服务中

Jquery “获取错误”';JSON';是未定义的“;在Web服务中,jquery,asp.net,ajax,json,web-services,Jquery,Asp.net,Ajax,Json,Web Services,我不熟悉webservice和JSON。我正在asp.net中开发一个应用程序,它使用Webservices和JSON将Ajax调用中的数据发布到服务器。 在下面的函数PostData中,我在以下位置收到一个错误: data: "{" + jsonObjectName + ":" + JSON.stringify(dataToSend) + "}", as "json" is undefined. 这里dataToSend是一个包含我的数据的对象 submitType是submit

我不熟悉webservice和JSON。我正在asp.net中开发一个应用程序,它使用Webservices和JSON将Ajax调用中的数据发布到服务器。 在下面的函数PostData中,我在以下位置收到一个错误:

 data: "{" + jsonObjectName + ":" + JSON.stringify(dataToSend) + "}",     as "json" is undefined. 
这里dataToSend是一个包含我的数据的对象
submitType是submit按钮id(在本页中,我有两个submit按钮,所以我按id调用)

strMessagetoShow是显示成功或失败的文本
strMethodToCall在Webservice中调用哪个方法

function PostData(dataToSend, submitType, strMessagetoShow, strMethodToCall,        jsonObjectName) {   
 $.ajax({
    url: window.top.GetWsUrl() + "/" + strMethodToCall,
    type: "POST",
    dataType: "json",
    data: "{" + jsonObjectName + ":" + JSON.stringify(dataToSend) + "}",
    timeout: 30000,     
    contentType: "application/json; charset=utf-8",
    success: function (data) {
        return data;
    },
    error: function (result) {
        alert(result.status + ' ' + result.statusText);
    }
 });
}

它是
JSON.stringify
,和
JSON.parse
,使用大写字母(javascript区分大小写)

此外,在对象中使用变量时,必须执行以下操作:

var obj = {};
    obj[jsonObjectName] = JSON.stringify(dataToSend);

$.ajax({
    ....
    data: obj,
    timeout: 30000,     
    ....etc
});

确保包含JSON库。有关API,请参阅

JSON.stringify(value, replacer, space)

试试这个,看看是否有帮助:

function PostData(dataToSend, submitType, strMessagetoShow, strMethodToCall, jsonObjectName) {   
 $.ajax({
    url: window.top.GetWsUrl() + "/" + strMethodToCall,
    type: "POST",
    dataType: "json",
    data: {jsonObjectName : JSON.stringify(dataToSend)}, // or $.parseJSON(dataToSend)
    timeout: 30000,     
    contentType: "application/json; charset=utf-8",
    success: function (data) {
        return data;
    },
    error: function (result) {
        alert(result.status + ' ' + result.statusText);
    }
 });
}
这里发生了什么变化:

更改为:

  "{" + jsonObjectName + ":" + json.stringify(dataToSend) + "}"
为此:

 {jsonObjectName : JSON.stringify(dataToSend)}

谢谢@adeneo,我这么做了,但我还是得到了同样的错误。如果像问题中那样引用,那么你似乎对引用有问题。请注意问题中的颜色,传递的数据不再是一个对象,而是一些。。。呃,还有其他的吗?请参考这个@RavinderGangadher-我只是说,在更新的浏览器中,任何与JSON对象相关的函数都要求您参考正确的对象,即带有大写字母的JSON。请您在注释中提及您所更改的内容。。所以我可以理解…(我是OP的)@Mr_Green-应该很明显,这是数据对象。现在它是一个对象,问题是它是一种带变量的字符串,不起作用。@格林先生-在什么浏览器中?我在IE、Chrome和Mozilla中进行了测试,当使用
JSON时。stringify
Crome和Firefox说如果打开控制台,
JSON
是未定义的?