0

我正在做一些非常简单的事情,但它不起作用..也许我错过了一些东西。

我需要通过 ajax 读取文本文件并进入 div。我可以通过 ajax 轻松写入文件,但不能读取。这是我所拥有的:

function ajaxLoader(url) {
  if(document.getElementById) {
    var x = (window.ActiveXObject) ? new ActiveXObject("Microsoft.XMLHTTP") : new XMLHttpRequest();
  }
  if(x) {
    x.onreadystatechange = function() {
      if(x.readyState == 4 && x.status == 200) {
        el = document.getElementById('content');
        el.innerHTML = x.responseText;
      }
    }

    x.open("GET",url, true);
    x.send(null);
  }
}

<a class="blocklink" href="#" id="readg" onclick="ajaxLoader('guestBook.txt')">Read The Guestbook</a></p>

<div id="content" style="width:600px;">

我整天都被困在这上面。我可以使用所有相同的代码,并将常规的 html 文件输出到 div,但不是这个 .txt 文件。txt 文件具有它需要的所有读写权限。谢谢!

马库斯

4

4 回答 4

0

您的 ajaxLoader 函数应该返回 false 以便不跟踪单击的链接。

于 2009-11-17T01:26:46.330 回答
0

如果您在本地运行代码,您将获得状态 0 而不是状态 200。要同时处理这两种情况,您可以使用:

if (x.readyState == 4 && (x.status == 0 || x.status == 200))

此外,当您单击链接时,该链接将被跟踪,因为您尚未取消它。由于 href 是“#”,它会转到同一页面的顶部,但它仍然会导致问题。(一个副作用是当您按下链接时页面将滚动到顶部。)通过单击事件返回 false 来取消链接:

onclick="ajaxLoader('guestBook.txt');return false;"
于 2009-11-17T01:33:15.637 回答
0

想通了..我从来没有清除缓存...缓存再次获胜!

于 2009-11-17T18:01:44.597 回答
0

尝试删除它if(document.getElementById)

你能提醒你的.responseText财产吗?它使用同步模式工作吗?

于 2009-11-17T01:23:05.247 回答