我几乎已经尝试了堆栈溢出,但不知怎的,我无法读取jquery ajax中成功函数调用返回的JSON字符串数据。我的成功函数收到以下JSON字符串:
Object {
readyState = 4, responseText = "{"
Response ":200,"
Data ":"
6 ","
Message ":"
6 "}", status = 200, statusText: "OK"
}
这是我成功的回调:
success: function(response, msg, responseText) {
if (response.Response == 200) {
console.log("Data was submitted");
var obj = responseText;
console.log(typeof obj);
} else if (response.Response == 400) {
console.log("there was some error");
}
}
当触发成功函数并检查状态代码时,它会执行console.log("数据已提交");声明成功,但是,我无法访问"数据":" 6"键/值对。
到目前为止,我尝试过这样做:
var obj = responseText;
console.log(obj.Data);
和
console.log(obj.data[1]);
以及许多其他方式,但要么它说" undefined"或给出和错误。但是,当我在console.log(obj)中时,在控制台中显示' obj'。这意味着我得到一个JSON对象。
请注意我也尝试过:
obj = jQuery.parseJSON(responseText);
这给了我一个错误:SyntaxError:JSON.parse:JSON数据第1行第2列的意外字符
在这种情况下该怎么办?我希望能够提取关键名称的值"数据":并分配其值=" 6"变量。
答案 0 :(得分:4)
成功回调的第一个参数是你需要的,而不是第三个。第一个参数表示从服务器返回的响应主体。此外,您无需在成功回调中检查不同于200状态代码的任何内容。这就是error
回调的目的,因为如果您的服务器返回400状态代码,将永远不会触发成功回调。
所以:
dataType: 'json',
success: function (response) {
console.log("Data was submitted");
console.log(response.Data);
},
error: function() {
console.log("there was some error");
}
答案 1 :(得分:1)
成功回调是success: function(data, textStatus, jqXHR )
因此,第1个data
将包含返回success
函数的数据。