Ajax post请求超时问题
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Ajax post请求超时问题相关的知识,希望对你有一定的参考价值。
如下已经设置了超时时间,由于后台运算会花费较长时间(大概4、5分钟),这个时间一旦较长,再返回Json给页面时页面就没反应了
$.ajax(
type: "post",
url: "/report/handleCondition",
data: "periodBeginTime": "" + periodBeginTime + "", "periodEndTime": "" + periodEndTime + "", "providerStr": "" + providerStr + "", "orderTypeStr": "" + orderTypeStr + "", "verifyType": "" + verifyType + "" ,
dataType: "json",
timeout: 1200000, //20分钟的超时时间
success: function (jsonData)
if (jsonData.Statu == 'ok')
cover.style.display = 'none';
covershow.style.display = 'none';
$("#showDetail").css("display", "block");
$("#reportIframe").attr("src", "");
$("#reportIframe").css("display", "block");
$("#reportIframe").attr("src", "http://reports.oa.com/Reports/Pages/Report.aspx?ItemPath=%2fWerify%2fMainReport");
return;
else
,
error: function (request, status, err)
if (status == "timeout")
alert("请求超时")
);
我设了20分钟的超时时间,实际上大概4、5分钟之后后台就会返回Json,但返回后前台没有反应,等了20分钟,弹出超时。 如果后台在较短时间内返回Json,例如一两分钟,那么前台是有反应的。。。怎么解决这种超时问题啊
需要4、5分钟的操作我不清楚具体是什么,如果是单纯的数据库操作之类的这个设计就有问题;如果是数据量十分大的操作那么应该考虑缓存、预处理等。
还有,你可以发送数据请求到后台,后台接收后便立即返回调用成功,然后把4,5分钟的操作放到另一个线程里去做,然后对每一次的请求后台都做一个静态的唯一标识,然后把标识返回前台,然后4,5分钟之后前台通过这个标识去后台找结果,或者不确定操作所需时间就缩短轮询的间隔,比如每30秒一请求,后台操作不完成便继续等待下一次请求。本回答被提问者和网友采纳 参考技术B async: true追问
没用
追答这个是异步的,你那个同步的会卡死浏览器的
以上是关于Ajax post请求超时问题的主要内容,如果未能解决你的问题,请参考以下文章