来自 XMLHttpRequest 的空 responseText

2022-01-15 00:00:00 xmlhttprequest javascript ajax

我写了一个 XMLHttpRequest,它运行良好但返回一个空的 responseText.

I have written an XMLHttpRequest which runs fine but returns an empty responseText.

javascript如下:

The javascript is as follows:

  var anUrl = "http://api.xxx.com/rates/csv/rates.txt";
  var myRequest = new XMLHttpRequest();

  callAjax(anUrl);

  function callAjax(url) {
     myRequest.open("GET", url, true);
     myRequest.onreadystatechange = responseAjax;
                 myRequest.setRequestHeader("Cache-Control", "no-cache");
     myRequest.send(null);
  }

  function responseAjax() {
     if(myRequest.readyState == 4) {
        if(myRequest.status == 200) {
            result = myRequest.responseText;
            alert(result);
            alert("we made it");
        } else {
            alert( " An error has occurred: " + myRequest.statusText);
        }
     }
  }

代码运行良好.我可以走过去,我得到了 readyState == 4 和一个状态 == 200 但 responseText 总是空白.

The code runs fine. I can walk through and I get the readyState == 4 and a status == 200 but the responseText is always blank.

我收到错误调度的日志错误(在 Safari 调试中):getProperties,我似乎无法找到参考.

I am getting a log error (in Safari debug) of Error dispatching: getProperties which I cannot seem to find reference to.

我已经在本地和远程服务器上的 Safari 和 Firefox 中运行了代码.

I have run the code in Safari and Firefox both locally and on a remote server.

将 URL 放入浏览器时将返回字符串并给出状态码 200.

The URL when put into a browser will return the string and give a status code of 200.

我在一个运行良好的 Mac Widget 中为相同的 URL 编写了类似的代码,但在浏览器中的相同代码永远不会返回结果.

I wrote similar code to the same URL in a Mac Widget which runs fine, but the same code in a browser never returns a result.

推荐答案

http://api.xxx.com/ 是否属于您的域?如果没有,您将被同源政策阻止.

Is http://api.xxx.com/ part of your domain? If not, you are being blocked by the same origin policy.

您可能需要查看以下 Stack Overflow 帖子,了解一些可能的解决方法:

You may want to check out the following Stack Overflow post for a few possible workarounds:

  • 规避同源策略的方法

相关文章