我有一个每5秒运行一次的Javascript函数,并通过 jQuery AJAX调用从同一服务器请求信息。一旦页面加载,该函数就会无限运行。
由于某种原因,AJAX查询每分钟或每两分钟失败一次,并显示
ERR_EMPTY_RESPONSE
在控制台中。奇怪的是,它失败了整整60秒,然后再开始工作一两分钟。
到目前为止,我已经尝试过没有成功:
我的上一台VPS服务器上没有任何问题。我现在用GoDaddy与共享主机运行这个,并想知道在那一端是否存在问题。其他站点和服务器的AJAX调用在停机期间工作正常。
我还习惯通过HTTPS运行网站,现在它只通过普通的HTTP。不确定是否相关。
以下是该功能的内容:
var interval = null;
function checkOrders() {
interval = window.setInterval(function () {
$.ajax({
type: "POST",
dataType: "json",
url: "http://www.chipshop.co.nz/ajax/check_orders.php",
data: {shopid : 699},
error: function(errorData) {
//handle error
},
success: function(data) {
//handle success
}
});
}, 5000); // repeat until switched off, polling every 5 seconds
}
答案 0 :(得分:1)
已解决:原来问题是GoDaddy托管问题。太多的POST请求导致了60秒的禁令和#39;从访问该文件。改为GET避免了这种情况。
This page包含用户emrys57的答案:
对我来说,问题是由托管公司(Godaddy)引起的 处理具有实质性响应数据的POST操作(任何事情 超过数十千字节)作为某种安全威胁。如果更多 超过6分钟发生在一分钟内,主持人拒绝执行 在下一个期间响应POST请求的PHP代码 分钟。我不完全确定主持人做了什么,但我做到了 请参阅tcpdump,作为对POST的响应的TCP重置数据包 来自浏览器的请求。这导致返回的http状态代码 jqXHR对象为0。
将操作从POST更改为GET修复了问题。不是 清楚为什么Godaddy强加了这个限制,但改变代码更容易 比改变主人。