消失的AJAX结果消失

时间:2011-05-25 22:14:15

标签: ajax html readystate onreadystatechange

使用AJAX调用CGI脚本,该脚本打开文件并在DIV中打印出来。

这在我有的测试页面上工作正常,但由于某种原因,在另一个页面中,它会将内容打印到DIV中,然后清除DIV。使用alert()我可以看到readystate从1,2,3,4,1,4改变,然后在他的4之后第二次div内容清除。它实际上调用了updatepage()函数两次,但是在第二次DIV清除时。当我检查firebug时,innerHTML从内容变为“”。

在我的测试页面中,即使发生了相同的readystate序列,也不会发生这种情况。

以下是我遇到问题的代码片段:

self.xmlHttpReq.open('POST', cgiScript, true);
self.xmlHttpReq.setRequestHeader('Content-Type', 'application/x-www-form-urlencoded');
self.xmlHttpReq.onreadystatechange = function()
 {
  if (self.xmlHttpReq.readyState == 4)
   {
    updatepage(self.xmlHttpReq.responseText);
   }
 }


function updatepage(str) 
   {
    document.getElementById("result").innerHTML = str;
   }

编辑!!!!!!!!!!!!!!!!!

好的我觉得我发现了什么错,但我不确定为什么。

在锚html href =“”导致问题。一旦我删除它,div仍然填充。

这会导致DIV在打印后消失

        <div class="menulinkboxes" id="listdiv">
        <a class="mainmenulinks"
        onclick='openFile("list,autos")'
        href="">auto-list</a>
        </div>

用href =“#”替换href =“”修复它。 #表示此页面

        <div class="menulinkboxes" id="listdiv">
        <a class="mainmenulinks"
        onclick='openFile("list,autos")'
        >auto-list</a>
        </div>

1 个答案:

答案 0 :(得分:0)

我知道你回答了这个,但我想我会迅速扩大你的答案。

href="#"

“#”告诉浏览器寻找一个锚标记,所以如果你把#符号留空,它就会自动锚定。

另外,我发现innerHTML可能会导致问题,DOM方法非常方便。为了检索该值,它应该可以正常工作。只是想提一下。