我使用以下Ajax函数格式:
var xmlhttp;
function addAddress(str)
{
if (window.XMLHttpRequest)
{
xmlhttp = new XMLHttpRequest();
}
else
{
xmlhttp = new ActiveXObject("Microsoft.XMLHTTP");
}
xmlhttp.onreadystatechange = function()
{
if (xmlhttp.readyState == 4 && xmlhttp.status == 200)
{
//specific selection text
document.getElementById('info').innerHTML = xmlhttp.responseText;
}
}
var addAddress = "add";
xmlhttp.open("POST", "sys.php", true);
xmlhttp.setRequestHeader("Content-type", "application/x-www-form-urlencoded");
var queryString = "&addAddress=" + addAddress;
xmlhttp.send(queryString);
}
function GetXmlHttpObject()
{
if (window.XMLHttpRequest)
{
return new XMLHttpRequest();
}
if (windows.ActiveXObject)
{
return new ActiveXObject("Micorsoft.XMLHTTP");
}
return null;
}
到目前为止,我的所有Ajax函数(如上所述)都运行良好。但是,现在该功能有时只能起作用。现在,有时我将不得不点击onclick事件几次来执行该功能,否则该功能将挂起,然后大约4分钟后它将执行。
我测试了部分功能,发现问题出在以下几处:
if (xmlhttp.readyState == 4 && xmlhttp.status == 200)
{
alert(xmlhttp.status);
//specific selection text
document.getElementById('info').innerHTML = xmlhttp.responseText;
}
当函数工作时,我可以发出警报(xmlhttp.status)并获得200.但是,当它不起作用时,警报框甚至不会触发。事实上,没有任何事情发生,甚至没有错误。
这可能是服务器问题吗?我有点认为我的网站遭到黑客入侵,但我发现任何问题都不能接受Ajax功能没有正常执行。
最后,我在本地主机上没有遇到这个问题,它只发生在实时网站上。
非常感谢任何帮助。
由于
答案 0 :(得分:1)
首先确认当您单击应触发它的按钮或控件时,实际上正在调用addAddress函数。
在第一行中只是一个简单的警报就像这样:
function addAddress(str)
{
alert('addAddress has been called!')
....
}
如果您没有收到警报,请确保页面上没有阻止该功能运行的javascript错误。在Firefox中,按CTRL + SHIFT + J以查看错误控制台。
如果该部分正在运行,请尝试将ajax请求的URL直接放入浏览器并以此方式进行诊断。
看起来您正在使用ajax:
请求此网址sys.php&addAddress= (address goes here)
检查页面是否会直接在浏览器中加载。如果没有,问题不是ajax请求,而是sys.php页面本身的问题 - 然后你可以深入研究。
希望有所帮助!
答案 1 :(得分:0)
这不是我期待的答案,但我最终让我的网络主机(GoDaddy)更改服务器,这解决了问题。差不多一年,我用PHP运行IIS7。由于我从未遇到任何问题,我只是继续使用该服务器。在Ajax延迟问题并且无法找到解决方案之后,我想我会切换到Apache。改变之后,一切都开始顺利运行了。
我想也许有一个我没有得到通知的软件更新。或者,也许我的网站遭遇了DDoS,这降低了我的Ajax请求的性能。最后,也许有人进入IIS并更改了设置。我不知道,我所知道的是服务器转换到Apache的那一刻是网站再次正常运行的时候。
感谢大家的建议。