我在body onLoad上调用了一个AJAX函数。那个AJAX调用了一个XML文件。
这是我的代码。
AJAX:
function loadXml(b,c)
{
var xmlhttp;
var txt,x,xx,i;
if (window.XMLHttpRequest)
{// code for IE7+, Firefox, Chrome, Opera, Safari
xmlhttp=new XMLHttpRequest();
}
else
{// code for IE6, IE5
xmlhttp=new ActiveXObject("Microsoft.XMLHTTP");
}
xmlhttp.onreadystatechange=function()
{
if (xmlhttp.readyState==4 && xmlhttp.status==200)
{
x=xmlhttp.responseXML.documentElement.getElementsByTagName("POST");
for (i=0;i<x.length;i++)
{
xx=x[i].getElementsByTagName("TITLE");
{
try
{
txt=txt + "<span class='nphead'>" + xx[0].firstChild.nodeValue + "</span><div class='divider'><div class='divtop'></div><div class='divbot'></div></div>";
}
catch (er)
{
txt=txt + "<span class='nphead'> </span><div class='divider'><div class='divtop'></div><div class='divbot'></div></div>";
}
}
xx=x[i].getElementsByTagName("CONTENT");
{
try
{
txt=txt + "<p class='pcontent'>" + xx[0].firstChild.nodeValue + "</p>";
}
catch (er)
{
txt=txt + "<p> </p><div class='divider'><div class='divtop'></div><div class='divbot'></div></div>";
}
}
}
document.getElementById(c).innerHTML=txt;
}
}
xmlhttp.open("GET",b,true);
xmlhttp.send();
}
BODY:
<body onLoad="loadXml('/content/blog/content.xml','posts')">
<div class="wrap">
<br><br><br><br><br><br><br>
<div class="content g_c" id="posts">
</div>
</div>
//some more stuffs. some stuffs deleted
</body>
CONTENT.XML :
<?xml version="1.0" encoding="utf-8"?>
<BLOG>
<POST>
<TITLE>Title!</TITLE>
<CONTENT>
content
</CONTENT>
</POST>
</BLOG>
结果很好,但问题是结果如下:( 粗体字是我唯一希望显示的字样)
未定义标题!
内容
为什么一开始就有“未定义”这个词?我怎么能摆脱它?我无法弄清楚是什么原因造成的。顺便说一句,提前感谢帮助我。
答案 0 :(得分:2)
在连接结果之前,您从未初始化txt
,因此在任何连接之前txt === undefined
。
改为使用var txt = "", ...
。
答案 1 :(得分:1)
因为第一个循环执行时txt
未定义,最好在循环开始之前设置txt = ''
,以便对loadXml
的多次调用将安全地工作
xmlhttp.onreadystatechange=function()
{
if (xmlhttp.readyState==4 && xmlhttp.status==200)
{
x=xmlhttp.responseXML.documentElement.getElementsByTagName("POST");
var txt = ''; // create txt as a local variable than a global one since it is used only inside the onreadystatechange method
for (i=0;i<x.length;i++)
{
xx=x[i].getElementsByTagName("TITLE");
{
try
{
txt=txt + "<span class='nphead'>" + xx[0].firstChild.nodeValue + "</span><div class='divider'><div class='divtop'></div><div class='divbot'></div></div>";
}
catch (er)
{
txt=txt + "<span class='nphead'> </span><div class='divider'><div class='divtop'></div><div class='divbot'></div></div>";
}
}
xx=x[i].getElementsByTagName("CONTENT");
{
try
{
txt=txt + "<p class='pcontent'>" + xx[0].firstChild.nodeValue + "</p>";
}
catch (er)
{
txt=txt + "<p> </p><div class='divider'><div class='divtop'></div><div class='divbot'></div></div>";
}
}
}
document.getElementById(c).innerHTML=txt;
}
}