XMLHttpRequest状态为0但responseText正确

时间:2014-04-13 02:19:39

标签: javascript xmlhttprequest

我有以下HTML文件 test.html

<html>
<head>
<title>Test</title>
</head>
<body>
<p>This is a test</p>
</body>
</html>

从控制台,在同一目录中的单独文件中,输入

var request = new XMLHttpRequest();
request.open("GET", "test.html", true);
request.send(null);

现在,request.responseText包含HTML文件的内容,但request.statusrequest.statusText为0和&#34;&#34;分别。我已经看到了一百个问题,其中responseText为空,状态为0,但我无法找到responseText正确行事且statusText无法正常行动的任何内容。为什么会发生这种情况?有什么想法吗?

1 个答案:

答案 0 :(得分:1)

学习基础知识

在开始使用网络编程之前,您应该了解什么是HTTPWebServerClientProtocolRequestResponseStatus Code

协议文件vs http

协议file://不能通过浏览器安全与XMLHttpRequest合作,更喜欢http://。 在PC /机器安装ApacheNginx

中使用http://

您使用PHP,.NET,Java(jsp或jsf)还是其他什么?

开始使用&#34; WEB&#34;建议您了解一种编程语言,也许还需要一个框架:

Ajax vs Sjax

异步模式下的Ajax需要onreadystatechange

Ajax("A"synchronous Javascript and XML):

var request = new XMLHttpRequest();
request.open("GET", "test.html", true);//true is "async"

request.onreadystatechange = function (event) {
    if (request.readyState==4) {
        console.log("status: "+request.status);
        console.log("response: "+request.responseText);
    }
};
request.send(null);

&#34; SJAX&#34; (&#34; S&#34; ynchronous Javascript和XML):

var request = new XMLHttpRequest();
request.open("GET", "test.html", false);//false is "sync"
request.send(null);
if (request.readyState==4) {
    console.log("status: "+request.status);
    console.log("response: "+request.responseText);
}

首选异步模式,这样您就可以在不需要等待另一个事件的情况下处理多个事件,也可以避免冻结&#34; javascript&#34;。