Я получаю сообщение об ошибке при разборе данных. как я могу решить? - PullRequest
0 голосов
/ 05 февраля 2020

Я извлекаю информацию из URL, используя 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 formatter проблем не возникало, но при синтаксическом анализе или попытке доступа к error.responseText.OTP

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

возникают ошибки, например (json .Parse anonymous). как я пытаюсь разобрать.

Ответы [ 2 ]

0 голосов
/ 05 февраля 2020

На самом деле, ваш 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);
0 голосов
/ 05 февраля 2020

JSON.parse() работает только со строковым параметром. Поэтому вы можете попробовать:

var ex = JSON.parse(error.responseText)

Кроме того, в вашем коде параметр URL равен ".php". Что это должно значить? Это, вероятно, причина вашей ошибки. Попробуйте установить фактическое php имя файла, к которому вы хотите отправить запрос.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...