如何检索html文件内容并插入另一个html文件?

时间:2015-07-25 11:03:24

标签: javascript html ajax

我正在尝试为移动应用编写模板,因为我只知道纯JavaScript,所以我的计划是用新的模板替换默认模板。几个小时后,我在这个问题上几乎筋疲力尽。它不是CORS,所有文件都在localhost中。

function getTheme(){
    var xhr = new XMLHttpRequest();
    xhr.open("GET", "model/1/index.html", true);
    xhr.responseType = "document";
    xhr.onreadystatechange = function() {
        if (xhr.readyState === 4) {
            if (xhr.status === 0) {
                var customTheme = document.getElementById('crapDiv');
                customTheme.innerHTML = xhr.responseXML;
            }
        }
    }
    xhr.send(null);
}

当我使用文本文件进行测试时,这个Ajax运行得非常好,但正如MDN所说,要使用ajax检索html,"文档"必须声明responseType,因此,使用xhr.responseXML它只返回一个DOM对象,即[object HTMLDocument]

我只是无法将此对象解析回内容,因此我无法将其插入另一个html文件中。

那么,我怎么能解决这个问题?而且,plz只有纯JS代码。

2 个答案:

答案 0 :(得分:0)

您无法使用JavaScripts编辑文件的内容,您只能阅读它。它并非如此。您需要一台可以保存数据的服务器,例如PHP。

您可以使用xhr.responseText将响应数据作为原始文本获取。

答案 1 :(得分:0)

最后我明白了。

function getTheme(){
    var xhr = new XMLHttpRequest();
    xhr.open("GET", "model/1/index.html", true);
    xhr.onreadystatechange = function() {
        if (xhr.readyState === 4) {
            if (xhr.status === 0) {
                var customTheme = document.getElementById('crapDiv');
                customTheme.innerHTML = xhr.responseText;
            }
        }
    }
    xhr.send(null);
}

diff只是responseType的声明,默认情况下是“”,而xhr.responseText是检索内容的正确方法,而xhr.responseXML是检索DOM对象的正确方法。

因为它应该是xhr.responseText,所以不再需要声明responseType,如果你还想要一个decalration,则必须是“”或“Text”。

日Thnx。