我尝试拨打服务器。数据的调用响应是数据库查询的结果。
查询很长(50秒)。从客户端调用开始20秒后,ajax在error
函数完成:
$.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.S。简短查询(< 20s)管理得很好
p.p.s。我尝试使用外部客户端(Postman)运行http调用,它运行时没有错误!
答案 0 :(得分:1)
问题#1:您的服务器端脚本不应该加载〜50秒。您在查询时遇到了问题。
问题#2:即使你在jQuery中设置了超时,也可能因为其他请求而提前超时。 (http://api.jquery.com/jquery.ajax/)。因此,修复客户端很困难,并且不是正确的解决方法。
粘贴一点服务器端代码,我也许可以提供帮助。
答案 1 :(得分:0)
这很可能是服务器方面的问题。服务器超时等待数据库完成查询。
编辑: 您可以尝试直接使用XMLHttpRequest对象,看看问题是否仍然存在
答案 2 :(得分:0)
也许你的php最大脚本时间超过了。尝试手动转到该页面。如果它显示正确那么一些错误是jquery。否则,Php或服务器端会出现一些错误。
顺便说一句,你应该在php.ini中检查它。 php.net说
如果达到此值,脚本将返回致命错误。默认限制为30秒,如果存在,则为php.ini中定义的max_execution_time值。
尝试:
set_time_limit(60);
在您编写脚本之前或编辑php.ini
答案 3 :(得分:0)
你必须写
set_time_limit ( 300 ); // time in seconds (5 min.)
在ajax文件的顶部(正如您在代码my server....
中提到的那样)
因为在服务器默认超时限制是30秒,你也必须增加它。
您可以在此处找到更多详细信息:http://php.net/manual/en/function.set-time-limit.php