01/10/2018, 09:12

Làm sao để sử dụng AJAX lấy dữ liệu từ link API kiểu JSON bằng Javascript thuần?

Chào các anh chị.

Cho em hỏi làm thế nào để khắc phục lỗi này ạ.

Em muốn request tới một web có API kiểu JSON về quote để in ra ở web của mình. Lúc em run thì thấy nó không hiện ra, bật f12 thì thấy console báo lỗi như sau: No 'Access-Control-Allow-Origin' header is present on the requested resource. Origin 'http://s.codepen.io' is therefore not allowed access.Em đã viết được theo kiểu jQuery nhưng dùng theo JS thuần thì không được.
Lên google tìm hiểu thì em cũng hơi hiểu đó là để trang request không đọc được dữ liệu từ trang server.

Đây là phần html:

<div id = "quote">
</div>

Còn đây là code javascript:

window.onload = function(){
  var http = new XMLHttpRequest();
  http.onreadystatechange = function(){
   if (this.readyState == 4 && this.status == 200) {
      document.getElementById("result").innerHTML = this.responseText;
    }
  };
  http.open('get', 'http://api.forismatic.com/api/1.0/?method=getQuote&format=jsonp&lang=en&jsonp=?');
  http.send();
};

Link code đầy đủ của em ở trong này:

CodePen

QM

...

(Lần đầu post bài có gì mong mọi người chỉ bảo)

viết 11:26 ngày 01/10/2018

bạn k lấy dữ liệu kiểu đó được đâu, js k cho phép, bạn google cái lỗi ở console là có câu trả lời chi tiết.
Nếu server k phải của bạn thì viết chrome extension, trong backgroud cho phép cross origin.
Nếu không viết chrome ext thì phải dùng ngôn ngữ khác thôi.

Ice Tea viết 11:18 ngày 01/10/2018

jsonp không dùng được với XMLHttpRequest đâu.
Bạn dùng thẻ script để load nó => demo

Nếu muốn dùng ajax thì tham khảo What is JSONP all about?

2_N viết 11:19 ngày 01/10/2018

Có vẻ như mình hiểu ý cậu rồi. Như cái link mình muốn lấy là link này http://forismatic.com/en/api/ và họ cho phép mình lấy dữ liệu mà.

2_N viết 11:26 ngày 01/10/2018

Cảm ơn bạn. Để mình thử rồi có gì hỏi tiếp nhé

Đào An viết 11:27 ngày 01/10/2018

Phải cùng domain mới dùng ajax bình thường , khác domain là báo lỗi ngay b tham khảo cách khắc phục ở đây https://viblo.asia/nguyen.duc.tung/posts/l5y8Rr52vob3

Bài liên quan
0