【发布时间】:2016-03-07 02:40:59
【问题描述】:
我有一个 ajax POST 请求,可能需要 2 秒到 30 多分钟之间的任何时间。发布请求是由于单击按钮而发生的
如果请求不到一两分钟,它就会返回响应,一切正常。但是,如果请求花费的时间超过两分钟,则会返回“网络错误:XMLHttpRequest:网络错误 0x2eff,由于错误 00002eff 无法完成操作”。
当然,它在 Firefox 和 Chrome 中运行良好。
应用程序部署在启用 SSL 的 JBoss 服务器上。这里的架构是我们有一个负载均衡器,将请求路由到两个 Jboss 服务器。
Internet Explorer
版本:11.0.9600.180971C 更新:11.0.25
我尝试了以下方法,但没有成功
1) ajax 将缓存设置为 false - 不起作用
2) 根据https://support.microsoft.com/en-us/kb/813827 更改了注册表设置 - 不起作用,这是令人困惑的地方,这表明它不是 IE 的东西,但同时它适用于 chrome 和 ff,所以它也不是服务器的东西
3) 将 ajax 超时设置为 0 - 无效
4) 在 $('#mdlSgn').click(function() { 根据jQuery Ajax requests are getting cancelled without being sent
$('#mdlSgn').click(function() {
$('#cnfdsgl').modal('hide');
$.ajax({
url: ajaxUrl,
type: "POST",
data: JSON.stringify(input),
contentType: "application/json; charset=UTF-8",
dataType: "json",
success: function(data) {
/// some logic
},
error : function(jqXhr, textStatus, errorThrown) {
/// some logic
}
});
//some other logic
});
【问题讨论】:
-
是的,我知道这需要 30 分钟,用户对此很满意,他们希望在那之后看到成功响应
-
你有一些了解用户。如果是我,我会让服务器立即响应,将任务放入工作队列,然后在事情完成并且结果可用时通知。
-
嗯,这是一种方法,但问题是它之前运行良好,我想知道为什么 IE 会出现这种行为的根本原因?
-
为什么不将处理作为原始请求的一部分(异步调用处理并立即返回),而是进行某种状态/状态请求,您可以定期调用检查处理是否完成?
标签: javascript ajax internet-explorer post jboss