[英]Java with ajax - ERR_EMPTY_RESPONSE - Ajax response throws error while server is processing the request
我在浏览器控制台中遇到错误。
无法加载资源:net :: ERR_EMPTY_RESPONSE
我的ajax调用适用于所有按钮单击,但是此错误仅适用于一个按钮(例如testExt按钮)。单击这些按钮时,将运行后台脚本并执行一些测试。 唯一的区别是此testExt需要更多的时间来完成其执行(将近4分27秒),但是即使在服务器端成功执行了脚本,响应也会在4分16秒时在ajax error
块中到达客户端。
控制台显示以下错误:
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时,我在浏览器上收到以下响应:
火狐:
铬
听起来好像您正在遇到某种超时。 在任何地方都可以超时4分钟以上的请求-浏览器,Web服务器,应用程序服务器...甚至网络设备和操作系统。 通常,最低的超时值由Web服务器设置。
听起来好像您在tomcat上运行,但我不太熟悉,但是您可以在https://tomcat.apache.org/connectors-doc/common_howto/timeouts.html上找到一些不错的信息。 可能有一种方法可以配置asyncTimeout
类的asyncTimeout
。
但是 ,我要重申我的先前评论(我知道您已经注意了):
我还要赞同@ DelightedD0D关于使用服务工作者或其他某种机制(例如轮询)的建议。 AJAX并不是真正为请求而构建的,因此您可能会遇到其他问题。
即使是我指向的文档,也建议不要将其设置为极值。
正如我提到的,这听起来像你要去不同的路线,从您的评论:
@TheMadDeveloper DelightedD0D:从你们的建议来看,我正在考虑在这种情况下使用websocket。 您认为这是个好主意吗? 虽然我被卡在stackoverflow.com/questions/37940540/
我认为这是一个明智的决定,尽管websocket可能有点过分。 据我了解,在执行任务时,您实际上并不需要服务器和客户端保持不断的交谈。 真的,您只想知道何时完成。
如果您在websocket路径上走得还很远,您可以看看服务器发送事件 (SSE)。
这篇文章有一些特定于Tomcat的信息。 另请参阅这篇文章 ,以详细比较SSE和Websocket。
希望有帮助!
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.