Ajax调用(使用jquery)在5分钟后不再得到响应
Ajax call (using jquery) gets no more responses after 5 minutes
事实上,我有一个JavaScript应用程序(jQuery),它正在向Java函数发送请求,该函数应该向我的ajax函数发回数据(成功案例)
在成功的情况下,我继续我的申请;在出现错误的情况下,我会停止我的过程并向用户显示错误消息。
但是,当Java代码花了5分钟以上的时间向我的Ajax调用发送响应时,这个(Ajax代码)就不再(work/response/goon/)得到任何响应了。。。
我试着将超时限制设置为600000 ms
(大约10分钟),但我仍然遇到了同样的问题(没有收到任何错误消息或输出,这可能对我有帮助)。
所以,如果有人知道这个问题的根源,我将不胜感激。
如果可以让它更清晰的话,下面是一些代码:
JSP
$(document).ready(function() {
/* performing some layout changes */
//
preValidationDisplay();
}
function preValidationDisplay() {
/* performing some layout changes */
setTimeout("getValidationResult()", 500);
}
function checkReadLogFile() {
$.ajax({
url: logFileUrl,
cache: false,
success: function(result)
{
$("#progressBarToResize").width(
'' + parseFloat(result.trim()) + '%' );
}
});
}
function getValidationResult()
{
var timer = setInterval("checkReadLogFile()", 1000);
$.ajax({
url: '<s:url value="doValidation"/>',
type: "GET",
cache: false,
dataType: "json",
async: true,
//timeout : 600000,
success: function(result, status)
{
// Do something
},
error: function(jqXHR, status, errorStr){
// Do something
}
});
}
java
@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;
}
当您使用HTTP时,不要期望连接花费超过半分钟的时间。
请使用WebSockets或Comet(长轮询)。
你看,有很多方面可能会决定停止你的连接:
- web浏览器、防火墙/路由器/isp、web服务器(例如:Apache)、服务器脚本语言(例如:PHP)
我唯一一次在PHP端禁用它是在我希望PHP即使在用户停止连接后也能继续运行时(顺便说一句,我还启用了另一个设置)。
如果没有一些代码,我不确定我是否能帮上什么忙,但你试过检查是哪个事件触发了ajax调用吗?有一次我犯了一个愚蠢的错误,在keydown上发送了一个ajax请求,后来我发现我需要使用keyup而不是keydown,因为一旦文本框的值设置为最近输入的text+键,就会触发keyup事件。因此,您可以在jQuery中尝试设置关键帧或更改事件。如果这是在本地主机上,这不是一个好兆头……首先确定是什么导致了问题,前端还是后端。
要做的事情:1) 更改jQuery 中的事件类型
$("#elem").live("keyup",function() {//send req});
2) 检查apache日志。如果你在ubuntu上或类似的地方,你可以访问/var/log/apache2/error.log
- Firebase迁移-简单的Firebase.set没有'不再工作了——旧的还是新的
- 如何将getJson的响应保存在全局变量中
- 如何使用Spring MVC将Facebook返回的响应数据保存在Java类中
- 使用angularjs向浏览器发送servlet响应(下载功能)
- MockJax没有在JavaScript应用程序中发送对我AJAX请求的响应
- 不再使用innerHTML进行AJAX响应.(代码未得到响应)
- 为什么可以't我使用了AJAX响应的一部分
- 响应动画手风琴不工作
- 如何从SeleniumWebdriver获取异步Javascript响应
- Ajax调用在Firefox中不会自动响应
- 可以在响应时隐藏iphone上的“播放”按钮以进行视频播放
- 由于响应中不存在“Access Control Allow Origin”标头,跨域请求停止工作
- 如何在 JavaScript 和 HTML 中更改对输入框的提示响应
- IIS动态HTTP响应标头
- 为什么我的附加组件面板的内容脚本在更改 contentURL 后不再响应端口消息
- 当响应式样式不再适用时删除类
- JavaScript 在页面收到 AJAX 响应后不再执行
- AJAX 问题:按钮不再响应
- Ajax调用(使用jquery)在5分钟后不再得到响应
- 在指令中使用scope后,我的网站不再响应