我在浏览器控制台中遇到错误。
无法加载资源:net :: ERR_EMPTY_RESPONSE
我的ajax调用适用于所有按钮点击,但此错误仅适用于一个按钮(例如 testExt 按钮)。点击这些按钮,后台脚本运行并执行一些测试。唯一的区别是这个 testExt 需要更多的时间来完成它的执行(接近4分27秒)但是响应在ajax的error
块中以4分16秒到达客户端当脚本在服务器端成功执行时。
控制台显示以下错误:
Object {readyState: 0, responseText: "", status: 0, statusText: "error"}
Ajax代码:
$.ajax({
type : "Get",
url : "resultValue.htm",
cache: false,
data : "testName=" + name,
success : function(response) {
// success logic here
},
error: function(jqXHR, textStatus){
console.log(jqXHR);
alert('There has been server side error. Please contact TechEng team to get this fixed.')
}
});
从此类请求返回的响应只是一个行字符串:
/xxxx/reports/2016-06-15/07-03-53-237-r1Qn/xxx-smoketest-report.html
我搜索了一些有关SO的问题,但我不确定它是否是服务器端的java内存问题,因为我也试图增加内存大小。请帮我理解出了什么问题。我是否错过了处理此ajax
请求的某些方案
当我直接点击服务器API时,我会在浏览器上收到以下响应:
火狐:
铬
答案 0 :(得分:4)
听起来好像你正在遇到某种超时。有许多地方可以超时4分钟的请求 - 浏览器,Web服务器,应用程序服务器......甚至可能是网络设备和操作系统。通常,最低超时值由Web服务器设置。
听起来像你在tomcat上运行,我不太熟悉,但你可以在https://tomcat.apache.org/connectors-doc/common_howto/timeouts.html找到一些好的信息。可能有一种方法可以配置asyncTimeout
。
然而,我会重申我先前的评论(我知道你已经注意到了):
我还要提出使用服务工作者或其他一些机制(例如民意调查)的建议@ DelightedD0D。 AJAX并不是真的为这么长的请求而构建,所以你可能会遇到其他问题。
即使是我指出的文档也建议不要将这些文档设置为极值。
正如我所提到的,听起来你是走的是与你的评论不同的路线:
@TheMadDeveloper DelightedD0D:根据你们的建议我想在这个场景中使用websocket。你认为这是个好主意吗?虽然我卡住了stackoverflow.com/questions/37940540 /
我认为这是一个明智的决定,虽然websockets可能有点过分。从我收集的内容来看,您并不需要服务器和客户端在执行任务时始终在说话。真的,你只想知道它什么时候结束。
如果你没有在websocket路径上走得太远,你可以看看Server-Sent Events(SSE)。
This post有一些特定于Tomcat的信息。 Also see this post用于SSE和websockets的详细比较。
希望有所帮助!