我正在使用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"});
这就是我试图解析的方式。
答案 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);