javascript XMLHttpRequest返回状态为0

时间:2016-06-13 23:15:54

标签: javascript ajax xmlhttprequest

我正在尝试使用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上得到了相同的结果

2 个答案:

答案 0 :(得分:0)

这不是跨源请求问题吗?由于你在另一个域中调用ajax中的URL,它会被阻止,这就是为什么当你从浏览器窗口执行它时它工作(相同的域),但是从你托管你的脚本的地方却没有?

答案 1 :(得分:0)

Cross-Origin Request,服务器必须提供一些白名单让你做你想做的事,在这里阅读: https://en.wikipedia.org/wiki/Cross-origin_resource_sharing

enter image description here