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:
QM
...
(Lần đầu post bài có gì mong mọi người chỉ bảo)
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.
jsonp
không dùng được vớiXMLHttpRequest
đâu.Bạn dùng thẻ
script
để load nó => demoNếu muốn dùng ajax thì tham khảo What is JSONP all about?
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à.
Cảm ơn bạn. Để mình thử rồi có gì hỏi tiếp nhé
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