Ошибка отображения при ответе ajax от функции php - PullRequest
1 голос
/ 18 июня 2020

У меня есть такой ajax вызов

function ExportData() {
  var data = {
    action: "export_database", // the name of your PHP function!
  };

  jQuery.ajax({
    type: "POST",
    url: ajaxurl,
    data: data,
    beforeSend: function () {},
    success: function (data) {
      alert(data);
    },
  });
}

И php работает вот так

function export_database(){
  return $response;
}

Проблема в этом ответе, у меня что-то вроде этого

{
    "type": "https://tools.ietf.org/html/rfc7231#section-6.5.1",
    "title": "One or more validation errors occurred.",
    "status": 400,
    "traceId": "|3fa58ee1-48bf0cb9f60bfa25."
}

Я хочу предупреждать только заголовок, но когда я пробую data.title , я получаю undefine Должен ли я что-то кодировать или декодировать, спасибо?

Ответы [ 3 ]

1 голос
/ 18 июня 2020

Попробуйте ниже:

    function ExportData() {
      var data = {
        action: "export_database", // the name of your PHP function!
      };

      jQuery.ajax({
        type: "POST",
        url: ajaxurl,
        data: data,
        beforeSend: function () {},
        success: function (data) {
          var parsedData = jQuery.parseJSON(data)
          alert(parsedData.title);
        },
      });
    }
1 голос
/ 18 июня 2020

Это то, что вам нужно. Просто войдите в объект, набрав data.title, и он отобразится в alert()

. Вам нужно определить dataType как json в вашем запросе.

Если он не работает, тогда используйте JSON.parse(data) вот так:

var response = JSON.parse(data)
alert(response.title)

Попробуйте следующее:

function ExportData() {
  var data = {
    action: "export_database", // the name of your PHP function!
  };

  jQuery.ajax({
    type: "POST",
    url: ajaxurl,
    dataType: 'json'
    data: data,
    beforeSend: function () {},
    success: function (data) {
      alert(data.title);
    },
    error: function(error){
      //Error
      alert(error.title)
    }
  });
}

Надеюсь, это поможет.

0 голосов
/ 18 июня 2020

Вы должны использовать JSON .parse () для доступа к объектам данных. Вот так:

function ExportData() {
  var data = {
    action: "export_database", // the name of your PHP function!
  };

  jQuery.ajax({
    type: "POST",
    url: ajaxurl,
    data: data,
    beforeSend: function () {},
    success: function (data) {
var res = JSON.parse(data)
      alert(res.title);
    },
  });
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...