如何读出XMLHttpRequest响应

时间:2018-01-05 21:56:52

标签: javascript xmlhttprequest

我正在做这样的XMLHttpRequest:

var url = "myurl.html";
var http_request=new XMLHttpRequest();
http_request.onreadystatechange=function(){
  if (http_request.readyState === 4){
    console.log(http_request.response);
  }
};
http_request.withCredentials = true;
http_request.open('GET',url,true);
http_request.send(null);

在控制台中http_request.response是空的,但当我在Chrome中查看网络标签时,我会收到这些内容enter image description here

如何从JavaScript中获取这些内容?

1 个答案:

答案 0 :(得分:0)

请求来自同一网络上的其他计算机。 myurl.html处的服务器不允许" Access-Control-Allow-Origin"。为此,在响应的标题中必须是这样的:

  

Access-Control-Allow-Origin:*

(*代表wildcard

当标头缺少该信息时,Chrome会阻止JavaScript中的响应。因此,网络选项卡将显示响应,但不显示JS控制台。要在不同的浏览器中绕过CORS,有几种方法。我使用Chrome网上商店的Chrome扩展程序。

为了进一步确保请求正确完成,可以将回调函数修改为this

http_request.onreadystatechange = function () {
  if(http_request.readyState === XMLHttpRequest.DONE && http_request.status === 200) {
    console.log(http_request.responseText);
  }
};

http_request.readyState应为4,但状态应为0(即使在“网络”选项卡中,它也会显示为200)。