【发布时间】:2015-12-23 15:20:03
【问题描述】:
我在这里几乎尝试了所有关于堆栈溢出的方法,但不知何故,我无法读取从 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("数据已提交");声明成功,但是,我无法访问 "Data":"6" 键/值对。
到目前为止,我已经尝试过这样做:
var obj = responseText;
console.log(obj.Data);
和
console.log(obj.data[1]);
和许多其他方式,但它要么说“未定义”,要么给出错误。但是,当我在控制台中使用 console.log(obj) 时,它会显示“obj”。这意味着我得到了一个 JSON 对象。
请注意,我也尝试过:
obj = jQuery.parseJSON(responseText);
这给了我一个错误:SyntaxError: JSON.parse: unexpected character at line 1 column 2 of the JSON data
在这种情况下该怎么办?我希望能够提取键名“Data”的值:并将其值 ="6" 分配给变量。
【问题讨论】:
-
response.Response、response.Data和response.Message -
嗨@RoryMcCrossan 感谢您的回复。我尝试按照您的建议执行此操作: obj = responseText;控制台.log(obj.Data);但是,它表明:未定义
-
嗨@RoryMcCrossan 哦哦哦!有效。谢谢你,兄弟。这么简单的错误。请发布它作为答案。这样我就可以标记它了。
-
response.Response 正在返回正确的值。在您提供的 JSON 对象中,响应和数据是同一对象的一部分...您是否尝试过 response.Data 而不是 responseText.Data
-
@Zafar Darin 得到了同样的答案。问题是您访问了
success处理程序的错误参数
标签: javascript jquery json ajax