我正在运行一些javascript,它使用setInterval来触发AJAX请求,然后根据返回的输出执行一些操作。我很困惑,因为它在我的家庭服务器上运行得很好,但是现在我把它放到了网上,我遇到了问题。
Google Chrome上显示以下错误:
http://www.domain.com/ajax/sound.php
Failed to load resource: net::ERR_EMPTY_RESPONSE
然而,错误并未始终如一地发生。有时脚本会在发生错误之前运行几分钟。有时它会在几秒钟内崩溃。
我已经检查了明显的解决方案 - 我的服务器端脚本没有返回任何内容。我这样做是通过评论整个脚本并让它除了返回信息之外什么都不做。那没有用。
我有几个AJAX请求从同一页运行,并且所有这些请求最终都会返回相同的错误(使用各自的代码页)。我已经尝试隔离请求并以减慢的速率一次执行一个请求,并确定请求在一般意义上有效,但只要其中一个发送错误,它们都会完全停止工作并开始发送相同的错误。
一旦发生错误,当我尝试访问我网站的任何部分时(即使没有AJAX的部分),我也没有得到任何回复。 Safari说" ...服务器意外断开了连接。这有时会在服务器繁忙时发生。等待几分钟,然后再试一次。"我已经在资源管理器,Chrome和Firefox中尝试过此类似的结果。值得庆幸的是,该网站确实在几分钟没有发出AJAX请求后重新启动。
其中一个AJAX请求的示例如下:
//At the set interval, we create a string for the request:
function alef(){
string = "a='a'";
request(sound, "ajax/sound.php", string);
}
//That function fires off an AJAX request:
function request(fix, url, string){
var xhttp = new XMLHttpRequest();
xhttp.onreadystatechange = function() {
if (xhttp.readyState == 4 && xhttp.status == 200) {
fix(xhttp.responseText);
}
}
xhttp.open("POST", url, true);
xhttp.setRequestHeader("Content-type", "application/x-www-form-urlencoded");
xhttp.send(string);
}
//The AJAX request returns a result to be processed by the following function:
function sound(text){
if(text == "sound"){
insound.play();
}
}
假设我的sound.php文件说:
<?php echo "sound"; ?>
它不仅仅是这样说,但即使是出于测试目的,我也遇到了同样的问题。
任何解决方案?