嗨,我是新手,我喜欢这个网站
我正在学习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,它至少会失败一次。
请帮我保存我还有的头发!
答案 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
});
了解详情
答案 1 :(得分:0)
请记住,由于连接速度很慢,您需要等待页面完全加载。