【发布时间】:2013-03-24 03:32:10
【问题描述】:
我有一个 xml 文件,我想每隔一秒将其内容加载到特定的 html div 中,这是解析 xml 文件的 javascript 部分:
function getEntries() {
if (window.XMLHttpRequest)
req = new XMLHttpRequest();
req.onreadystatechange = handleReq;
req.open("GET", "entries.xml", true);
req.send(null);
}
function handleReq() {
if (req.readyState == 4)
document = req.responseXML;
var states = document.getElementsByTagName("entry");
for (i = 0; i < states.length; i++) {
currentState = states[i];
document.getElementById("LogArea").innerHTML = "<table><tr><td><b>Name:</b></td><td>"
+ currentState.getAttribute("umessage");
+"</td></tr><tr><td><b>Message:</b></td><td>"
+ currentState.getAttribute("uname");
+"</td></tr></table>";
}
}
这是 xml 文件:
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<entries>
<entry umessage="aaaaaaaa" uname="aaaaaaa" />
<entry umessage="Hello everybody" uname="John" />
<entry umessage="Hello everybody" uname="Smith" />
<entry umessage="Hello everybody" uname="Knuth" />
</entries>
这就是 html 部分:
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<body bgcolor="yellow" onload='setInterval("getEntries()",1000)'>
<div id="LogArea" align="left">
</div>
</body>
</html>
问题是指定的 div 中没有加载任何内容,firebug 内部也没有错误存在
【问题讨论】:
-
JavaScript 是否加载了 标签?
-
你能扩展“不起作用”吗?什么正在发生您没有预料到?你是什么没有发生?例外?错误?
-
这里的代码对我有用,什么浏览器,你试过用console.log输出任何数据吗?在我看来,JQuery 会让这更容易一些,但除了函数调用应该是“getEntries”而不是“getEntries()”之外,一切都应该没问题,将完整的代码发布到你的单个文件中
-
这与您的实际问题无关,但您的
getEntries函数看起来有点奇怪。您检查是否定义了XMLHttpRequest,如果是则设置rec,但随后您继续并使用rec,这意味着初始检查有点毫无意义,因为如果XMLHttpRequest它仍然会中断无论如何都没有定义。无论如何,XMLHttpRequest将始终被定义,除非您需要支持 IE7 或更早版本。如果您需要支持 IE7,那么您需要调整您的 ajax 代码以使用它。如果没有,您可以完全放弃if()检查,因为它对您没有任何帮助。
标签: javascript xml ajax html