Javascript 获得<;车身>;使用AJAX
我有以下AJAX代码:Javascript 获得<;车身>;使用AJAX,javascript,ajax,Javascript,Ajax,我有以下AJAX代码: function ajax(){ if (!navigator.standalone) return; for (var i= document.links.length; i-->0;) { document.links[i].onclick= function() { if(this.getAttribute("class") == "noeffect") return; var r
function ajax(){
if (!navigator.standalone) return;
for (var i= document.links.length; i-->0;) {
document.links[i].onclick= function() {
if(this.getAttribute("class") == "noeffect") return;
var req= new XMLHttpRequest();
req.onreadystatechange= function() {
if (this.readyState!==4) return;
document.body.innerHTML= this.responseText;
ajax();
};
req.open('GET', this.href, true);
req.send();
return false;
};}
}
window.onload= function() {
window.scrollTo(0, 0.9);
ajax();
};
现在在我的页面上,我的
上有一些特定页面上的类。当然,只有那些课程不会被退回。
有没有一种方法可以使用AJAX获取整个身体?或者可能是整个html(包含
内容)
非常感谢您的帮助:)请改用
编辑
你的代码不正确。您应该检查req.readyState==4
和req.status==200
,然后调用req.responseText
:
req.onreadystatechange = function() {
if (this.readyState==4 && this.status==200) {
document.body.innerHTML= this.responseText;
ajax();
}
};
主要问题是innerHTML在元素中设置HTML,而不是替换它。 所以你至少会在一个body元素中得到一个body元素,这是非法的 所以你必须使用replaceChild而不是innerHTML,但是你不能,因为你没有body节点,而且我担心替换body元素根本不起作用(至少在IE中是这样) 在这种情况下,responseXML(如果可用)也不会帮助您,因为您无法在IE中的不同文档之间移动节点 结论:
您需要解析响应,提取正文内容和正文类。
然后设置innerHTML和现有主体的类 简短示例(可能需要根据响应修改RegExp)
var parsed=this.responseText.match(/谢谢:)。但是呃我怎么用呢??很抱歉,我的JavaScript技能类似于1/100HTML document=XML document,因此您可以加载它并使用函数。“改用responseXML”,则您的示例根本不使用它。@atlavis:HTML文档不是XML文档。XHTML文档是XML文档。(XHTML在HTML5中已经死了。)如果HTML文档体是有效的XML,那么为什么不呢?嗯,嗯,好的。怎么做?:'(.这似乎有点难,不是吗:pDoesn不一定很难,一个RegExp就可以做到。
var parsed=this.responseText.match(/<body\s+class="([^"]*)">(.*)<\/body>/);
document.body.className=parsed[1];
document.body.innerHTML=parsed[2];