我有一个在AWS域名运行的网站(wagtail CMS):8000,我的API在域名运行:8801
在我的网页上,我尝试使用JS从API获取一些信息(在API上正确设置了Access-Control-Allow-Origin标头,这是一个基于django的应用程序)
不幸的是,无论我尝试访问什么,下面的代码只返回xhr.status = 0和空的responseText。
当我把域名:8000放在xhr.open('GET','http://domain:8000',true)时,一切正常,我看到了我的HTML代码。
function load() {
var xhr = new XMLHttpRequest();
xhr.open('GET', 'http://domain:8801/api/', true);
xhr.setRequestHeader("Content-Type", "application/json;charset=UTF-8");
xhr.send();
if (xhr.status != 200) {
alert( "ERR" ); --always ERR in browser
}
else {
alert( "SUCCESS" );
}
}
在API方面,我看到了我的所有请求,在服务器控制台中状态= 200。
答案 0 :(得分:2)
您应该使用回调函数来捕获使用XMLHttpRequest
对象的请求的响应。做这样的事情:
xhr.addEventListener('readystatechange', function() {
if (xhr.status != 200) {
alert( "ERR" ); --always ERR in browser
} else {
alert( "SUCCESS" );
}
}
});
答案 1 :(得分:0)
你需要在xhr.status完全有效之前等待xhr.readyState == 4(实际上我认为它在3处有效,但让我们保持与99.999%的代码一致)
function load() {
var xhr = new XMLHttpRequest();
xhr.open('GET', 'http://domain:8801/api/', true);
xhr.setRequestHeader("Content-Type", "application/json;charset=UTF-8");
xhr.onreadystatechange = function() {
if (xhr.readyState == 4) {
if (xhr.status != 200) {
alert( "ERR" ); --always ERR in browser
}
else {
alert( "SUCCESS" );
}
}
};
xhr.send();
}