Javascript XMLHttpRequest onreadystatechanged未启动?

Javascript XMLHttpRequest onreadystatechanged未启动?,javascript,html,ajax,Javascript,Html,Ajax,我在Web服务器上托管的同一目录中有一个html文件和一个.txt文件。html文件包含以下代码: <html> <head> <script> window.onload = function() { receiveMessage(); } function receiveMessage() { var xmlhttp = new XMLHttpRequest; xmlhttp.open("GET", "message.txt"

我在Web服务器上托管的同一目录中有一个html文件和一个.txt文件。html文件包含以下代码:

<html>
<head>
<script>

window.onload = function() {
    receiveMessage();
}

function receiveMessage() {

    var xmlhttp = new XMLHttpRequest;
    xmlhttp.open("GET", "message.txt", true);
    xmlhttp.send();
    xmlhttp.onreadystatechanged = function() {
        if (xmlhttp.readyState == 4 && xmlhttp.status == 200) {
            alert(xmlhttp.responseText);
        }
    }       
}

</script>
</head>
<body>
</body>
</html>

由于文本文件message.txt包含hello world,因此在收到响应时,应该会弹出一个包含该消息的javascript警报框,但实际上并非如此。我做错了什么?

将请求和更改功能onreadystatechanged重新排序为onreadystatechange:

将open和send调用放在onready statechanged事件之后,如中所示

函数loadXMLDoc { var-xmlhttp; if window.XMLHttpRequest{//IE7+、Firefox、Chrome、Opera、Safari的代码 xmlhttp=新的XMLHttpRequest; } else{//IE6、IE5的代码 xmlhttp=新的ActiveXObjectMicrosoft.xmlhttp; } xmlhttp.onreadystatechange=函数{ 如果xmlhttp.readyState==4&&xmlhttp.status==200{ document.getElementByIdmyDiv.innerHTML=xmlhttp.responseText; } } openGET,demo_get.asp,true; xmlhttp.send; } AJAX 请求数据
您要查找的属性是onreadystatechange,而不是onreadystatechanged。结尾没有d。

感谢您的回复,但我在Chrome和Firefox中都进行了测试,没有显示带有xmlhttp.responseText的警报框。实际上,在调用xmlhttp.open之前,我已经尝试过设置ReadyStateChanged事件处理程序,甚至在您发布响应之前,它对我来说都不起作用。。。同步请求似乎在工作,但显然我需要让异步请求也工作。我看到你更新了答案,我会测试它,并让你知道这是否解决了问题。它对我很有效。我把它标为答案。我的原始代码有什么问题?我意识到它没有IE5和IE6的支持,但没有用这些浏览器进行测试。是因为我在window.onload的事件处理程序中调用receiveMessage吗?顺序不重要。receiveMessage函数将在处理任何事件之前完成运行。@GaneshKamath-您是否对我的答案发表评论,询问人们为什么对您的答案投反对票?我推测这是因为,在你把我的答案复制到它之前,它是完全错误的,代码只是因为你重写了它,或者更确切地说,从另一个站点复制/粘贴它,但没有注意到显著的差异。我现在已经删除了它,谢谢各位…我的Firefox或Chrome控制台都没有提醒我onreadystatechanged甚至不是XMLHttpRequest对象的事件,因为最后的d…我想我需要注意细节,有时让我感到沮丧。
function receiveMessage() {
    var xmlhttp = new XMLHttpRequest;
    xmlhttp.onreadystatechange = function() {
        if (xmlhttp.readyState==4 && xmlhttp.status==200) {
            alert(xmlhttp.responseText);
        }
    }
    xmlhttp.open("GET","message.txt",true);
    xmlhttp.send();
}