2 Вопрос: Как вы используете WP REST API для отображения результатов поиска в простом Javascript?

вопрос создан в Wed, May 8, 2019 12:00 AM

У меня есть поле поиска, в котором я хотел бы получить результаты поиска пользователя, извлекая данные из файлов JSON из API-интерфейса WP REST. Мне нужно сделать это в простом JavaScript, и я работаю в классе JavaScript для ООП. Подскажите, пожалуйста, лучший способ настроить код?

Я пробовал это в функции вызываемого метода getResults, которая находится в моем классе:

getResults() {
    var httpRequest = new XMLHttpRequest()
    httpRequest.onreadystatechange = function (results){
        alert(results.title.rendered);
    }

    httpRequest.open('GET', 'https://website.com/wp-json/wp/v2/pages/');
    httpRequest.send();
}

Однако из-за этого возникает ошибка «Uncaught TypeError: Невозможно прочитать свойство, отображаемое как неопределенное»

Я ссылался на этот пост, в котором показаны разные версии JQuery и Plain JS. Мне нужно использовать простой JS. https://gist.github.com/joyrexus/7307312

Результаты запроса JSON должны отображаться на странице со списком заголовков сообщений. Хотя ради этого вопроса я просто хочу, чтобы заголовки отображались в alert().

    
0
  1. Можете ли вы зарегистрировать результат, пожалуйста?
    2019-05-08 16: 30: 26Z
  2. Конан, извините, я не уверен, что вы просите, не могли бы вы уточнить?
    2019-05-08 16: 31: 46Z
  3. Я спрашиваю, можете ли вы заменить alert(results.title.rendered); на alert(results); и отправить скриншот?
    2019-05-08 16: 35: 27Z
  4. Я изменил код на alert(results);, и на экране появилось предупреждение [событие объекта]
    2019-05-08 16: 41: 09Z
  5. Я также только что попытался alert(results.title);, и я получил неопределенный в предупреждении
    2019-05-08 16: 49: 58Z
2 ответа                              2                         

httpRequest.onreadystatechange имеет свойство readyState, которое устанавливается каждый раз, когда изменяется состояние запроса. Вам нужно подождать, пока readyState == 4, прежде чем заполнить ваш объект результатов.

    
0
2019-05-08 17: 00: 23Z
  1. Таким образом, вы не можете использовать XMLHttpRequest без оператора IF?
    2019-05-08 17: 11: 59Z
  2. вы можете, вы просто должны быть в состоянии перехватить соответствующее состояние. Например, вы можете использовать оператор switch. switch(this.readyState) { case 4: console.log(this.responseText); break; case default: //do nothing }
    2019-05-08 17: 40: 52Z

Обновите свою функцию следующим образом:

function getResults() {
    var httpRequest = new XMLHttpRequest()
    httpRequest.onreadystatechange = function (){
        if (this.readyState == 4 && this.status == 200) {
         obj = JSON.parse(this.responseText);
         alert(obj.title);//if there is a title on your Json response
      }
    }

    httpRequest.open('GET', 'https://website.com/wp-json/wp/v2/pages/');
    httpRequest.send();
}
    
0
2019-05-08 19: 43: 05Z
  1. Спасибо за попытку, но это не сработало. Он отображал только необработанные данные JSON, а не заголовки страниц
    2019-05-08 17: 02: 36Z
  2. @ Iisrael попытайтесь выполнить это последнее редактирование с помощью анализатора json 'obj = JSON.parse ();' это проанализирует ваш ответ в объекте ... и поблагодарит за ответ ...
    2019-05-08 19: 42: 02Z
источник размещен Вот