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。正如我所说,我对这件事还不熟悉。现在可以了!谢谢你的帮助