2 u013890437 u013890437 于 2015.06.19 13:59 提问

ajax请求时间太长,后台返回json,前台无反应。 1C

由于后台运算会花费较长时间(大概4、5分钟),这个时间一旦较长,再返回Json给页面时页面就没反应了。
``
$.ajaxFileUpload({
url : $(this).attr("action"),
secureuri : false,
formObj : $(this),
append_data : {
'datemonth' : datemonthImport
},
dataType : 'json',
async : false,
error : function(data, status) {
if (data) {
alert(data.responseText);
removeShadeDiv();
}
},
success : function(info) {
alert(info.data);
showGrid();
query(true);
$("#datemonthImport").val("");
$("#datemonthSpanImport").text("");
removeShadeDiv();
}
});

后台处理大概4、5分钟之后后台就会返回Json,但返回后前台没有反应,等了20分钟,弹出超时。  如果后台在较短时间内返回Json,例如一两分钟,那么前台是有反应的。。。怎么解决这种超时问题啊  。

而且在Google浏览器Chrome 4分半 还是会接收到,但是在IE11就没有任何反应。

7个回答

u012006909
u012006909   2015.06.19 14:21

给里面加一个参数:timeout:100000
单位是毫秒

qq_33933332
qq_33933332 非常感谢,解决了问题
9 个月之前 回复
francislpx
francislpx   2015.06.19 14:13

尽可能的优化后台啊,这么久,等得花儿都谢了

u013890437
u013890437   2015.06.19 14:20

@francislpx : 导入3万条数据,每条数据后台都需要查询判断,最后还需要插入表中,而且这个时间可以接受。

u013890437
u013890437   2015.06.19 14:24

@cnxieyang 加过了,这个只是超时,后台处理正确,我想要的是处理成功多少,失败多少。如果加了timeout,就跳到error里面了。而且Google就可以接收到返回信息。

u013829202
u013829202   Rxr 2015.06.19 14:48

那没办法,去优化sql吧,索引加上。 查询多的数据弄个缓存啥的。第一次可能慢点,后面就好了

u013890437
u013890437   2015.06.19 15:09

@觅夜的黑 : 后台sql 需要关联的表挺多,每天数据需要查一次缓存,查一次数据库,最后可能需要插入或修改,当然最后插入或修改是1000条提交一次。
我很想知道,为什么IE对服务器返回的信息没反应了呢,而且IE这条请求处于挂起状态。

WolfySein
WolfySein   2015.06.19 23:27

我有个想法,可能并不能解决你的问题,但我觉得可以参考一下、你看你是要导入数据是吧,而且长时间内无返回导致连接超时,那我觉得如果是从用户体验这个角度用户八成可能认为这个系统当机了,我想你是不是可以考虑启动一个子线程去监听你已经存储的数量定时向前端返回,然后弄个进度条来显示存储状态,这样可以解决长时间无响应,对用户也比较友好。

Csdn user default icon
上传中...
上传图片
插入图片