【问题标题】:XMLHttpRequest status 0 but responseText correctXMLHttpRequest 状态 0 但 responseText 正确
【发布时间】:2014-04-14 05:35:23
【问题描述】:

我有以下 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 和 ""。我已经看到了一百个问题,responseText 为空且状态为 0,但我找不到任何 responseText 正确运行而 statusText 未正确运行的问题。为什么会发生这种情况?有什么想法吗?

【问题讨论】:

  • “异步”中的 Ajax 需要 onreadystatechange
  • 我在控制台上一次输入所有这些。当我进入 console.log(request.status) request.readyState 时已经是 4。
  • 但以防万一,我尝试了一个 onreadystatechange 函数; status 仍然返回 0。
  • 请看我的回答。
  • 你的http://是什么情况?请说清楚。

标签: javascript xmlhttprequest


【解决方案1】:

了解基础知识

在开始 Web 编程之前,您应该了解什么是 HTTPWebServerClientProtocolRequestResponseStatus Code

协议文件与 http

Protocol file:// 不能与 XMLHttpRequest 一起使用,因为浏览器安全性,更喜欢 http://。 要在您的 PC/机器中使用 http://,请安装 ApacheNginx

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

要开始使用“WEB”,最好先了解一种编程语言,也许还需要了解一个框架:

Ajax 与 Sjax

异步模式下的 Ajax 需要 onreadystatechange

阿贾克斯 ("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);

“SJAX”(“S”同步 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);
}

首选异步模式,这样您就可以处理多个事件而无需等待另一个,也避免冻结“javascript”。

【讨论】:

  • 你是对的;问题在于使用file:// 而不是http://。我知道 Python。一开始就足够了,还是建议在继续之前学习 PHP 或 Ruby?非常感谢您的帮助。
  • Python 也不错!试试 Django 框架。我编辑我的答案。
猜你喜欢
  • 2011-06-27
  • 1970-01-01
  • 1970-01-01
  • 2014-05-28
  • 2013-01-18
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2018-11-11
相关资源
最近更新 更多