Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/445.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 获得<;车身>;使用AJAX_Javascript_Ajax - Fatal编程技术网

Javascript 获得<;车身>;使用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

我有以下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 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];