我正在尝试为移动应用编写模板,因为我只知道纯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代码。
答案 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。