我正在尝试使用XMLHttpRequest将文件传输到Javascript pgm。我观察到的是XMLHttpRequest.send(null)似乎没有任何效果。如果我使用异步XMLHttpRequest,如下面的代码所示,脚本完成并显示正文中的文本。如果我使用同步XMLHttpRequest,通过将XMLHttpRequest.open的第3个参数设置为false(默认为true),脚本也会完成并在正文中显示文本。所以它的行为好像.send调用没有效果。
这可能意味着我在文件的代码或位置有错误。代码位于HTML文件中,test.txt位于同一目录中。我正在使用Firefox 3.6.13在本地打开HTML文件(例如,使用文件/打开文件...菜单项)。
这就是我在警报中看到的内容:
异步(point:readyStatus):7:0,8:0,1:1,6,9:1
同步:7:0,8:0,9:1
我很欣赏有关错误或如何进一步调试的建议。
<html>
<head>
<script type="text/javascript">
function test(data)
{
alert(data);
}
function handlerQ()
{
alert("point 1 readyState="+this.readyState);
if(this.readyState == 4 && this.status == 200)
{
// so far so good
alert("point 2");
if(this.responseXML != null && this.responseXML.getElementById('test').firstChild.data)
// success!
{
alert("point 3");
test(this.responseXML.getElementById('test').firstChild.data);
}
else
{
alert("point 4");
test(null);
}
}
else if (this.readyState == 4 && this.status != 200)
{
// fetched the wrong page or network error...
alert("point 5");
test(null);
}
alert("point 6");
}
var clientQ = new XMLHttpRequest();
alert("point 7 readyState="+clientQ.readyState);
clientQ.onreadystatechange = handlerQ;
alert("point 8 readyState="+clientQ.readyState);
clientQ.open("GET", "test.txt",false); // asynchronous
alert("point 9 readyState="+clientQ.readyState);
clientQ.send(null);
alert("point 10 readyState="+clientQ.readyState);
</script>
</head>
<body>
This is the body
</body>
</html>
答案 0 :(得分:0)
从本地文件系统获取文件时,您需要将结果状态比较为0表示成功,而不是200表示HTTP请求。另外,请确保您的test.txt
是XML文件。