0

我正在使用AJAX.

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 anonymous) 的错误

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

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

4

2 回答 2

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);

于 2020-02-05T09:05:09.843 回答
0

JSON.parse()仅适用于字符串参数。所以你可以试试:

var ex = JSON.parse(error.responseText)

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

于 2020-02-05T08:52:26.883 回答