Amn*_*ite 14 javascript ajax xmlhttprequest innerhtml
我使用页面获取脚本动态地将网页加载到div中.继承人的代码.BTW Im使用Firefox w/Kubuntu
function fetch(URL, divId) {
req = window.XMLHttpRequest ? new XMLHttpRequest() : new ActiveXObject("MSXML2.XMLHTTP.3.0");
req.open("GET", URL);
req.onreadystatechange = function() {
if (req.readyState == 4 && req.status == 200) {
document.getElementById(divId).innerHTML = req.responseText;
}
}
req.send(null);
}
Run Code Online (Sandbox Code Playgroud)
当我试图让它加载页面没有任何反应,我得到一个错误
错误:文档元素之后的垃圾
源文件:file:///home/amnite/Stuff/MetalBraska/Shows/ContentRight.html
行:2,列:1
源代码:
<img src="Layout/HeaderDiv.jpg" width="250px" height="7px">
Bry*_*eld 36
我的答案是分段的
该错误是因为它试图解析ContentRight.html为XML文件.XML文件是严格的,所以任何像缺失的小东西</img>都会导致整个失败.在这种情况下,有多个顶级元素.(在普通的HTML中,只有一个顶级元素<html>).第二个顶级元素被认为是"文档元素之后的垃圾".我假设图像是导致问题的第二个元素.
但这就是重点.您没有理由在第一页中解析XML.你只想要HTML.对?我的猜测是,它正在尝试解析XML并将其存储到responseXML.由于错误,responseXML为null.但你正在使用,responseText所以应该没有问题.(忽略错误)
所有这些,现在我看到了问题.您需要HTTP状态200 req.status == 200.由于您没有使用http://而您正在使用file://,因此没有状态代码,也没有服务器错误的可能性,500也几乎没有机会检测到未找到404.所以你会得到的就是0.当你得到这样的东西时,一个好习惯是添加警戒线
req.onreadystatechange = function() {
alert(req.readyState)
if (req.readyState == 4 && req.status == 200) {
document.getElementById(divId).innerHTML = req.responseText;
}
}
Run Code Online (Sandbox Code Playgroud)
会提醒1 2 3 4所以你知道readyState是4.然后试试
req.onreadystatechange = function() {
if(req.readyState == 4)
alert(req.status)
if (req.readyState == 4 && req.status == 200) {
document.getElementById(divId).innerHTML = req.responseText;
}
}
Run Code Online (Sandbox Code Playgroud)
你会得到0,你会更接近问题.
一个好的解决方案是
req.onreadystatechange = function() {
if (req.readyState == 4 && (req.status == 200 || req.status == 0 && req.responseText)) {
document.getElementById(divId).innerHTML = req.responseText;
} else {
document.getElementById(divId).innerHTML = '<b>Error. HTTP ' + req.status + '</b>'
}
}
Run Code Online (Sandbox Code Playgroud)
因为如果状态为0,那可能意味着互联网连接失败,在这种情况下responseText将是空白然后你会得到Error. HTTP 0.如果它不是空白的话,那就意味着它file://就像魅力一样.
当然,服务器级别的错误会给出Error. HTTP 500或者诸如此类的.
| 归档时间: |
|
| 查看次数: |
17390 次 |
| 最近记录: |