我正在尝试使用JavaScript和XMLHttpRequest调用REST API。 该网址为:" http://quotes.stormconsultancy.co.uk/random.json"
这可以在浏览器窗口中运行,但是当我尝试在浏览器中将其作为javascript运行时,它始终返回状态0 (即使我将URL替换为任何其他网址以获取简单的GET请求 - 例如http://www.yahoo.com,我仍然会得到相同的结果。
以下是代码:
(function callRestAPI() {
var request = new XMLHttpRequest();
var url = "http://quotes.stormconsultancy.co.uk/random.json";
request.onreadystatechange = function () {
if (request.readyState === XMLHttpRequest.DONE) {
if (request.status === 200) {
alert("The response was: " + request.responseText);
} else if (request.status === 0) {
alert("The response was a status code of 0");
}
}
};
request.open("GET", url, "false");
request.send();
})();
我对如何解决这个问题感到茫然。任何帮助将不胜感激。
谢谢,
(注意:我在Firefox 47和Chrome 51上得到了相同的结果
答案 0 :(得分:0)
这不是跨源请求问题吗?由于你在另一个域中调用ajax中的URL,它会被阻止,这就是为什么当你从浏览器窗口执行它时它工作(相同的域),但是从你托管你的脚本的地方却没有?
答案 1 :(得分:0)
Cross-Origin Request,服务器必须提供一些白名单让你做你想做的事,在这里阅读: https://en.wikipedia.org/wiki/Cross-origin_resource_sharing