Javascript Ajax调用(使用jquery)在5分钟后不会得到更多响应
事实上,我有一个JavaScript应用程序(jQuery),它正在向一个Java函数发送请求,该函数应该将数据(成功案例)发送回我的ajax函数。Javascript Ajax调用(使用jquery)在5分钟后不会得到更多响应,javascript,jquery,ajax,jsp,tomcat,Javascript,Jquery,Ajax,Jsp,Tomcat,事实上,我有一个JavaScript应用程序(jQuery),它正在向一个Java函数发送请求,该函数应该将数据(成功案例)发送回我的ajax函数。 在成功案例中,我继续我的申请;在发生错误的情况下,我停止我的过程并向用户显示错误消息 但是,当Java代码需要5分钟以上的时间来发送对我的Ajax调用的响应时,这个(Ajax代码)不再(work/respond/go-on/)得到任何响应 我尝试将超时限制设置为600000毫秒(10分钟),但我仍然遇到同样的问题(并且没有任何错误消息或输出,这可能
在成功案例中,我继续我的申请;在发生错误的情况下,我停止我的过程并向用户显示错误消息 但是,当Java代码需要5分钟以上的时间来发送对我的Ajax调用的响应时,这个(Ajax代码)不再(work/respond/go-on/)得到任何响应 我尝试将超时限制设置为600000毫秒(10分钟),但我仍然遇到同样的问题(并且没有任何错误消息或输出,这可能对我有所帮助) 因此,如果有人知道这个问题的根源,我将不胜感激 下面是一段代码,如果可以让它更清楚的话: JSP
当您使用HTTP时,千万不要期望连接时间超过半分钟 使用WebSocket或Comet(长轮询) 请看,有许多方可能会决定停止您的连接:
- web浏览器、防火墙/路由器/isp、web服务器(如Apache)、服务器脚本语言(如PHP)
我在PHP端禁用此功能的唯一一次是当我希望PHP在用户停止连接后仍能继续运行时(顺便说一句,我已经启用了另一个设置)。如果没有一些代码,我不确定我是否能帮上忙,但您是否尝试过检查触发ajax调用的事件?有一次我犯了一个愚蠢的错误,在keydown上发送了一个ajax请求,后来我发现我需要使用keydown,而不是keydown,因为这是在textbox的值设置为text+最近输入的键时触发的事件。 因此,您可以尝试在jQuery中设置密钥或更改事件。如果这是在本地主机上,这不是一个好迹象……首先确定是什么导致了问题,前端还是后端 要做的事情: 1) 更改jQuery中的事件类型
$("#elem").live("keyup",function() {//send req});
2) 检查apache日志。如果你的电脑是ubuntu或类似的,你可以转到/var/log/apache2/error.log任何代码?服务器端功能?您的服务器端持续一分钟以上?您可能应该对此进行优化,因为正如@Christian所响应的,任何请求都不应该超过30秒……您是否设置了onerror处理程序来获取Ajax调用的错误?你有没有和费德勒或查尔斯这样的代理人一起看电话?我很乐意帮忙,但规则不是我自己定的。我对您的代码一无所知,但如果这是一个常规的ajax调用,那么除了用其他东西替换它之外,没有其他方法了。问题是,我正在开发一个已经建立起来的web门户,可能有很多东西需要修改……据我所知,他有意发送持续时间这么长的请求。
@RequestMapping(value = "/doValidation", method = RequestMethod.GET)
public String processValidationResults(HttpServletRequest request, HttpServletResponse response,
@RequestHeader("Connection") String conn) {
ValidationResult validationResult = null;
JSONObject resultJson = new JSONObject();
HttpSession session = request.getSession();
JSONObject progressMap = (JSONObject) session.getAttribute("progressMap");
String uploadedFilePath = progressMap.getString("filePath");
String realMimeType = progressMap.getString("realMimeType");
long fileSize = progressMap.getLong("fileSize");
String ctxPath = request.getContextPath();
// INVOKE the VALIDATION ENGINE
try {
validationResult = validationEngineService.getValidationResult(uploadedFilePath, ctxPath);
resultJson = JSONObject.fromObject(validationResult);
} catch (Exception e) {
validationResult = null;
resultJson.put("errorMsg", e.toString());
}
try {
response.getWriter().print(resultJson);
response.flushBuffer();
} catch (Exception e) {
}
return null;
}
$("#elem").live("keyup",function() {//send req});