【问题标题】:Ajax call returns 'error' after 20 secondsAjax 调用在 20 秒后返回“错误”
【发布时间】:2015-05-15 20:54:28
【问题描述】:

我尝试调用服务器。带有作为数据库查询结果的数据的调用响应。 查询很长(50 秒)。从客户端调用开始 20 秒后,error 函数上的 ajax 完成:

$.ajax({
        type : "POST",
        contentType : 'text/plain;charset=UTF-8',
        dataType : 'json',
        data : p_jsonCall,
        url : 'my server....',

        cache : false,
        error : function(p_result) {
            ...
        },
        success : function(p_result) {

...

p_result

{
    "readyState": 0,
    "responseText": "",
    "status": 0,
    "statusText": "error"
}

如果我在 ajax 调用中添加 timeout : 300000, //5 min 作为参数,我也会遇到同样的问题。

附言短查询(

p.p.s.我尝试使用外部客户端(邮递员)运行 http 调用,它运行时没有错误!

【问题讨论】:

  • 无关:50s 长的查询!你确定吗?我很同情数据库服务器的状态:(
  • 首先检查您的请求是否适用于小数据
  • 是的,我还有另一个可以正常工作的查询。 (如果我在服务器上用另一个小查询替换大查询的代码)
  • 你在服务器端设置超时了吗?
  • 如果服务器响应 > 20s 是否需要调用 error,或者如果服务器响应 > 20s 是否 调用 error

标签: javascript jquery ajax timeout


【解决方案1】:

你必须写

 set_time_limit ( 300 );  // time in seconds (5 min.)

在您的 ajax 文件顶部(正如您在代码 my server.... 中提到的) 因为在服务器默认超时限制是 30 秒,你也必须增加它。

您可以在此处找到更多详细信息:http://php.net/manual/en/function.set-time-limit.php

【讨论】:

    【解决方案2】:

    可能你的 php 最大脚本时间超过了。尝试手动转到该页面。如果它显示正确,那么一些错误是 jquery 。否则 PHP 或服务器端有一些错误。

    顺便说一句,您应该在 php.ini 中检查它。 php.net 说

    如果达到此值,脚本将返回致命错误。默认限制为 30 秒,如果存在,则为 php.ini 中定义的 max_execution_time 值。

    试试看:

    set_time_limit(60);
    

    在您的脚本之前或编辑 php.ini

    【讨论】:

      【解决方案3】:

      问题 #1:您的服务器端脚本加载时间不应超过 50 秒。您的查询有问题。

      问题 #2:即使您在 jQuery 中设置了超时,也可能会因为其他请求而提前超时。 (http://api.jquery.com/jquery.ajax/)。再说一遍,在客户端修复它很困难,而且不是正确的修复方法。

      粘贴一些服务器端代码,我也许可以提供帮助。

      【讨论】:

      • 服务器端脚本加载时间不应超过 50 秒。该规则写在哪里,那么我们无法更改服务器超时并将其设置为 50s。同样,OP 并没有抱怨这里的性能,他只是想帮助解决客户端遇到的问题。
      【解决方案4】:

      这很可能是服务器端问题。服务器超时等待数据库完成查询。

      编辑: 您可以尝试直接使用 XMLHttpRequest 对象,看看问题是否仍然存在

      【讨论】:

      • 我不认为这是服务器问题(使用旧版本的客户端我没有任何错误)。
      • 服务器端 sn-p 会很好地测试您的场景。
      猜你喜欢
      • 2017-03-26
      • 2012-08-11
      • 1970-01-01
      • 1970-01-01
      • 2021-03-26
      • 1970-01-01
      • 1970-01-01
      • 2015-03-14
      • 2020-08-13
      相关资源
      最近更新 更多