1

嗨,我是新来的,我喜欢这个网站

我正在学习 javascript,到目前为止我已经完成了很多教程,但我无法让 ajax 工作。

我在 W3school 看到了这个

   var xmlhttp;
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)
    {
    document.getElementById("myDiv").innerHTML=xmlhttp.responseText;
    }
  }
xmlhttp.open("GET","ajax_info.txt",true);
xmlhttp.send();

现在我将一行改为

xmlhttp.open("GET","ajax_info.php?day="+document.getElementById("day").value,true);

它应该基于一天而不是所有天来读取信息。

有时页面是空的,什么也没有发生,有时它可以工作并且一切都在那里。

要重现,您可以连续按 F5 3 次,它至少会失败一次。

请帮我保存我还有的最后一点头发!

4

2 回答 2

0

问题是由于脚本加载太快导致“day”元素还没有出现。

要解决此问题,您可以简单地添加一个事件处理程序来等待文档加载。

你可以这样做:document.addEventListener("load", functionName, false);然后创建一个函数来保存你粘贴在这里的代码。

该函数将在适当的时间调用并且它应该可以工作。

除此之外,我建议使用 jQuery 或 MooTools 之类的库,因为它使您的代码更容易在许多浏览器上运行。在您的代码中,您正在检查用户必须使用哪个浏览器来创建请求。

使用 jquery,您可以使用一行代码完成所有代码,如下所示:

$(document).ready(function(){   // Wait for the document to load
    $.get("http://www.website.com?day="+$("#day").val());   // $.get will create an ajax, $("#day") is equivalent to getting an element by Id
});

您可以在http://www.jquery.com了解更多信息

于 2012-06-30T17:26:44.113 回答
0

@Karmen,没有看到你的完整代码,所以不确定它可能失败的真正原因。对于我在http://wp89.com/test/ajax/的测试页面, 我按 F5 刷新 10 次以上,但没有失败。

请记住,您每次都需要等待页面完全加载,因为连接可能很慢。

于 2012-06-30T18:53:33.273 回答