AJAX并不总是有效

时间:2012-06-30 17:22:10

标签: javascript ajax

嗨,我是新手,我喜欢这个网站

我正在学习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);

它应该根据一天而不是所有日期来阅读信息。

有时页面是空的,没有任何反应,有时候它会起作用,一切都在那里。

要重现你可以连续3次点击F5,它至少会失败一次。

请帮我保存我还有的头发!

2 个答案:

答案 0 :(得分: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

了解详情

答案 1 :(得分:0)

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

请记住,由于连接速度很慢,您需要等待页面完全加载。