Javascript 使用ajax将HTML文档附加到元素

Javascript 使用ajax将HTML文档附加到元素,javascript,ajax,Javascript,Ajax,我使用各种在线资源编写了这段代码,但我似乎无法理解最后一部分 function loadajax (event) { event.preventDefault(); xhr = new XMLHttpRequest(); xhr.onreadystatechange = function(){ if(xhr.readyState == 4){ if(xhr.status == 200) do

我使用各种在线资源编写了这段代码,但我似乎无法理解最后一部分

function loadajax (event) {
    event.preventDefault();
    xhr = new XMLHttpRequest();
    xhr.onreadystatechange  = function(){ 
        if(xhr.readyState  == 4){
            if(xhr.status  == 200) 
                document.ajax.dyn="Received:"  + xhr.responseText; 
            else
                document.ajax.dyn="Error code " + xhr.status;
        }
    }; 

    xhr.open('GET', this.href, true);
    var content = document.getElementsByTagName('article')[0];

    content.innerHTML = xhr.responseText;
}
在我需要将内容添加到页面之前,它似乎一直有效。实际上
content.innerHTML=xhr.responseText不返回任何内容。我得到了一个简单的HTML文件,我怎样才能在我的页面上发布它?我做错了什么


谢谢你的帮助

将contet.innerHTML置于状态200内


您只是在内容真正存在之前为其赋值。在ajax从服务器获得它之前

将contet.innerHTML置于状态200内


您只是在内容真正存在之前为其赋值。在ajax从服务器获得它之前

ajax调用是异步的。如果移动
content.innerHTML=xhr.responseText行进入
onreadystatechange
函数,如下所示:

function loadajax (event) {
event.preventDefault();
xhr = new XMLHttpRequest();
 xhr.onreadystatechange  = function() 
    { 
       if(xhr.readyState  == 4)
       {
        if(xhr.status  == 200) 
            document.ajax.dyn="Received:"  + xhr.responseText; 

            content.innerHTML = xhr.responseText;
        else
            document.ajax.dyn="Error code " + xhr.status;
        }
    }; 

xhr.open('GET', this.href, true);
var content = document.getElementsByTagName('article')[0];

}

ajax调用是异步的。如果移动
content.innerHTML=xhr.responseText行进入
onreadystatechange
函数,如下所示:

function loadajax (event) {
event.preventDefault();
xhr = new XMLHttpRequest();
 xhr.onreadystatechange  = function() 
    { 
       if(xhr.readyState  == 4)
       {
        if(xhr.status  == 200) 
            document.ajax.dyn="Received:"  + xhr.responseText; 

            content.innerHTML = xhr.responseText;
        else
            document.ajax.dyn="Error code " + xhr.status;
        }
    }; 

xhr.open('GET', this.href, true);
var content = document.getElementsByTagName('article')[0];

}

您选择从头开始编写XHR是有原因的吗,比如使用jQuery还是其他一些可以很好地将它与许多其他好功能结合起来的东西?我不想使用jQuery。无论是出于学习目的,还是因为我发现使用“纯”JS更干净。通过使用jQuery,如果没有库,我将永远无法从头开始编写javascript:)。好的,学习一下。但是,对于生产,通过重新使用经过良好测试的代码,您的项目可以获得很多好处。您选择从头开始编写XHR,而不是使用jQuery或其他可以很好地将其与许多其他良好功能结合在一起的东西,这有什么原因吗?我不想使用jQuery。无论是出于学习目的,还是因为我发现使用“纯”JS更干净。通过使用jQuery,如果没有库,我将永远无法从头开始编写javascript:)。好的,学习一下。不过,在生产方面,通过重新使用经过良好测试的代码,您的项目将获得很多好处。回复很好,我喜欢您解释了他为什么需要将调用转移到innerHTML。谢谢。它似乎仍然不起作用,但这可能是其他原因:-/。顺便说一句,不应该xhr.open('GET',this.href,true);是否也处于状态=200?@SnippetSpace:是否缺少
xmlhttp.send()?显然是:p。正如我所说,我对这件事还不熟悉。现在可以了!感谢您的帮助伟大的回应,我喜欢您包括了他为什么需要将呼叫转移到innerHTML的解释。谢谢。它似乎仍然不起作用,但这可能是其他原因:-/。顺便说一句,不应该xhr.open('GET',this.href,true);是否也处于状态=200?@SnippetSpace:是否缺少
xmlhttp.send()?显然是:p。正如我所说,我对这件事还不熟悉。现在可以了!谢谢你的帮助