0

我是 web 服务和 JSON 的新手。我正在 asp.net 中开发一个应用程序,它使用 Webservices 和 JSON 在 Ajax 调用中将数据发布到服务器。在下面的函数 PostData 中,我收到一个错误:

 data: "{" + jsonObjectName + ":" + JSON.stringify(dataToSend) + "}",     as "json" is undefined. 

这里 dataToSend 是一个对象,其中包含我的数据
submitType 是提交按钮 id(在页面中我有两个提交按钮,所以我通过 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);
    }
 });
}
4

3 回答 3

1

它是JSON.stringify, 并JSON.parse带有大写字母(javascript 区分大小写)。

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

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

$.ajax({
    ....
    data: obj,
    timeout: 30000,     
    ....etc
});
于 2012-12-29T07:19:02.943 回答
0

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

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)}
于 2012-12-29T07:24:19.477 回答
-1

确保包含 JSON 库。有关 API,请参阅https://github.com/douglascrockford/JSON-js/blob/master/json2.js

JSON.stringify(value, replacer, space)
于 2012-12-29T07:20:34.157 回答