【问题标题】:'undefined' text at the start of the ajax resultajax 结果开头的“未定义”文本
【发布时间】:2013-08-12 16:58:19
【问题描述】:

我有一个要在正文 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 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>

结果很好,但问题是结果是:(粗体字是我只希望显示的)

未定义标题!

内容

为什么开头有“未定义”这个词?我将如何摆脱它?我不知道是什么原因造成的。顺便说一句,提前感谢您帮助我。

【问题讨论】:

    标签: html xml ajax


    【解决方案1】:

    您在连接结果之前从未初始化txt,因此在任何连接之前txt === undefined

    请改用var txt = "", ...

    【讨论】:

      【解决方案2】:

      因为第一个循环执行时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;
          }
        }
      

      【讨论】:

        猜你喜欢
        • 2014-03-01
        • 1970-01-01
        • 2023-03-17
        • 2013-01-09
        • 2016-10-05
        • 1970-01-01
        • 2011-12-29
        • 1970-01-01
        • 2014-05-31
        相关资源
        最近更新 更多