2 Câu hỏi: Làm cách nào để bạn sử dụng API WP REST để hiển thị kết quả tìm kiếm trong Javascript đơn giản?

câu hỏi được tạo ra tại Wed, May 8, 2019 12:00 AM

Tôi có một trường tìm kiếm mà tôi muốn tạo kết quả tìm kiếm của người dùng bằng cách lấy dữ liệu từ các tệp JSON từ API WP REST. Tôi cần phải làm điều này trong javascript đơn giản và tôi đang làm việc trong một lớp javascript cho OOP. Bạn có thể vui lòng cho tôi biết cách tốt nhất để thiết lập mã không?

Tôi đã thử điều này, trong hàm phương thức được gọi là getResults trong lớp của tôi:

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

Tuy nhiên, điều đó mang lại cho tôi lỗi "Uncaught TypeError: Không thể đọc thuộc tính 'được kết xuất' không xác định"

Tôi đã tham khảo bài đăng này cho thấy các phiên bản JQuery và Plain JS của những thứ khác nhau. Tôi cần sử dụng JS đơn giản. https://gist.github.com/joyrexus/7307312

Kết quả của yêu cầu JSON phải được hiển thị trên trang với danh sách các tiêu đề bài đăng. Mặc dù vì câu hỏi này, tôi chỉ muốn các tiêu đề hiển thị trong alert().

    
0
  1. Bạn có thể đăng nhập kết quả không?
    2019-05-08 16: 30: 26Z
  2. Conan, xin lỗi, tôi không chắc bạn đang yêu cầu điều gì, bạn có thể vui lòng làm rõ không?
    2019-05-08 16: 31: 46Z
  3. Tôi hỏi bạn có thể thay thế alert(results.title.rendered); bằng alert(results); và gửi ảnh chụp màn hình không?
    2019-05-08 16: 35: 27Z
  4. Tôi đã thay đổi mã thành alert(results); và cảnh báo được hiển thị [Sự kiện đối tượng]
    2019-05-08 16: 41: 09Z
  5. Tôi cũng vừa thử alert(results.title); và tôi đã không xác định được trong cảnh báo
    2019-05-08 16: 49: 58Z
2 Câu trả lời                              2                         

httpRequest.onreadystatechange có một thuộc tính được gọi là readyState được đặt mỗi khi trạng thái của yêu cầu thay đổi. Bạn cần đợi cho đến khi readyState == 4 trước khi đối tượng kết quả của bạn được điền.

    
0
2019-05-08 17: 00: 23Z
  1. Vì vậy, bạn không thể sử dụng XMLHttpRequest mà không có câu lệnh IF?
    2019-05-08 17: 11: 59Z
  2. bạn có thể, bạn chỉ cần có thể nắm bắt trạng thái thích hợp. Ví dụ, bạn có thể sử dụng một câu lệnh chuyển đổi. switch(this.readyState) { case 4: console.log(this.responseText); break; case default: //do nothing }
    2019-05-08 17: 40: 52Z

Cập nhật chức năng của bạn như thế này:

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. Cảm ơn bạn đã thử, nhưng điều đó không hiệu quả. Nó chỉ hiển thị dữ liệu JSON thô, không hiển thị tiêu đề của các trang
    2019-05-08 17: 02: 36Z
  2. @ Iisrael thử bản chỉnh sửa cuối cùng này với trình phân tích cú pháp json 'obj = JSON.parse ();' điều này sẽ phân tích phản hồi của bạn thành đối tượng ... và thnx để bình chọn câu trả lời ...
    2019-05-08 19: 42: 02Z
nguồn đặt đây