解析数据时出现错误。我该如何解决?

时间:2020-02-05 08:43:15

标签: javascript json ajax

我正在使用AJAX从URL中提取信息。

var settings = {
  "url": ".php",
  "method": "POST",
  "timeout": 0,
  "headers": {
    "Content-Type": "application/json"
  },
  "data": JSON.stringify({"email":"mail","userid":"admin","type":"push","apikey":"apikey"}),
};

e.preventDefault();
$.ajax(settings).done(function (response) {
  console.log(response);
  alert(response);
});


$.ajax({
  url: ".php",
  type: "POST",
  "headers": {
    "Content-Type": "application/json"
  },
  "data": JSON.stringify({"email":"mail","userid":"admin","type":"push","apikey":"apikey"}), 
  error: function(error) {
    console.log(error.responseText);
  }

然后我使用responseText获得了这样的数据。当我打印error.reponseText时,会得到如下数据:

{
  "status": 402,
  "status_message": "Failed",
  "OTP": "536960"
}

,此数据类型是字符串。在JSON格式化程序上进行测试时没有问题,但是在解析或尝试访问error.responseText.OTP

时遇到诸如(json.Parse匿名)之类的错误。
var ex = JSON.parse({"status":402,"status_message":"Failed","OTP":"536960"});  

这就是我试图解析的方式。

2 个答案:

答案 0 :(得分:0)

JSON.parse()仅适用于字符串参数。因此,您可以尝试:

var ex = JSON.parse(error.responseText)

此外,在您的代码中,URL参数为".php"。那是什么意思?这可能是导致您出错的原因。尝试设置要将请求发送到的实际php文件名。

答案 1 :(得分:0)

实际上,您的error.reponseText已经Json,因此您可以通过这种方式访问​​

console.log(error.responseText.OTP);

已更新

请注意, JSON.parse()仅适用于字符串参数

var str = "{\"status\":402,\"status_message\":\"Failed\",\"OTP\":\"536960\"}";
var ex = JSON.parse(str); 
console.log(ex.OTP);