Javascript XMLHttpRequest发送无效

时间:2010-12-28 08:17:08

标签: xmlhttprequest

我正在尝试使用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>

1 个答案:

答案 0 :(得分:0)

从本地文件系统获取文件时,您需要将结果状态比较为0表示成功,而不是200表示HTTP请求。另外,请确保您的test.txt是XML文件。