每次AJAX查询失败60秒

时间:2016-03-15 07:35:10

标签: javascript php jquery ajax

我有一个每5秒运行一次的Javascript函数,并通过 jQuery AJAX调用从同一服务器请求信息。一旦页面加载,该函数就会无限运行。

由于某种原因,AJAX查询每分钟或每两分钟失败一次,并显示

  

ERR_EMPTY_RESPONSE

在控制台中。奇怪的是,它失败了整整60秒,然后再开始工作一两分钟。

到目前为止,我已经尝试过没有成功:

  • 不同的浏览器
  • 不同的互联网连接
  • 更改功能的轮询时间。 (仍然以60秒的间隔失败。例如每10秒运行一次,它失败6次。或者5x12或1x60)
  • 建议在我的计算机上刷新IP设置的网络搜索

我的上一台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
}

1 个答案:

答案 0 :(得分:1)

已解决:原来问题是GoDaddy托管问题。太多的POST请求导致了60秒的禁令和#39;从访问该文件。改为GET避免了这种情况。

This page包含用户emrys57的答案:

  

对我来说,问题是由托管公司(Godaddy)引起的   处理具有实质性响应数据的POST操作(任何事情   超过数十千字节)作为某种安全威胁。如果更多   超过6分钟发生在一分钟内,主持人拒绝执行   在下一个期间响应POST请求的PHP代码   分钟。我不完全确定主持人做了什么,但我做到了   请参阅tcpdump,作为对POST的响应的TCP重置数据包   来自浏览器的请求。这导致返回的http状态代码   jqXHR对象为0。

     

将操作从POST更改为GET修复了问题。不是   清楚为什么Godaddy强加了这个限制,但改变代码更容易   比改变主人。