jQuery 如何从 responseText 读取这个 JSON 字符串

Zaf*_*far 5 javascript ajax jquery json

我几乎在堆栈溢出时尝试了所有方法,但不知何故我无法读取从 jquery ajax 中的成功函数调用返回的 JSON 字符串数据。我的成功函数接收以下 JSON 字符串:

Object {
  readyState = 4, responseText = "{"
  Response ":200,"
  Data ":"
  6 ","
  Message ":"
  6 "}", status = 200, statusText: "OK"
}
Run Code Online (Sandbox Code Playgroud)

这是我的成功回调:

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");
   }
 }
Run Code Online (Sandbox Code Playgroud)

当成功函数被触发并检查状态代码时,它会执行 console.log("Data wasmitted"); 语句成功,但是,我无法访问 "Data":"6" 键/值对。

到目前为止,我已经尝试过这样做:

var obj = responseText;
console.log(obj.Data);
Run Code Online (Sandbox Code Playgroud)

console.log(obj.data[1]);
Run Code Online (Sandbox Code Playgroud)

和许多其他方式,但要么说“未定义”,要么给出错误。但是,当我使用 console.log(obj) 时,它在控制台中显示“obj”。这意味着我得到了一个 JSON 对象。

请注意,我也尝试过:

obj = jQuery.parseJSON(responseText);
Run Code Online (Sandbox Code Playgroud)

这给了我一个错误:SyntaxError:JSON.parse:JSON 数据第 1 行第 2 列的意外字符

在这种情况下该怎么办?我希望能够提取键名 "Data": 的值,并将其值 ="6" 分配给一个变量。

Dar*_*rov 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");
}
Run Code Online (Sandbox Code Playgroud)