我有一个使用setInterval()的简单队列系统,我使用jquery ajax检查后端的队列。当满足某些条件时,我想重定向到该人可以继续该过程的页面。
在Firefox上我按照我的预期重定向,但在IE和Chrome上却没有。 IE简单地给出了一个"这个页面无法显示"错误和Chrome提供了一个"此网页有一个重定向循环"错误。
任何想法出了什么问题?
这是我的代码:
$(document).ready(function () {
StartTheTimer();
function StartTheTimer(e) {
var sec = parseInt($("#RefreshSeconds").val()) + 1;
var timer = setInterval(function () {
$('#spanQueueCountdown').text(--sec);
if (sec == 1) {
$('#spanSeconds').text('second');
}
else {
$('#spanSeconds').text('seconds');
}
if (sec == 0) {
clearInterval(timer);
$.ajax({
type: "POST",
url: "/Purchase/CheckQueue",
data: {
applicationSessionId: $("#ApplicationSessionId").val(),
eventId: $("#EventId").val(),
ordernumber: $("#OrderNumber").val()
},
cache: false,
dataType: "json",
success: function (result, textStatus, jqXHR) {
if (result.success && jqXHR.status == 200) {
if (!result.redirect) {
$("#spanQueueNumber").text(result.positionInQueue);
StartTheTimer();
}
else {
window.location.replace(result.redirecturl);
}
}
else {
console.log('Checking the queue failed.')
window.location.href = "/";
}
},
error: function () {
console.log('Error in checking queue.')
window.location.href = "/";
}
});
}
if ($('#spanQueueNumber').text() == 0) {
clearInterval(timer);
$('#spanQueueCountdown').text(0);
}
}, 1000);
}
});
答案 0 :(得分:0)
您在}
方法
StartTheTimer
答案 1 :(得分:0)
我解决了我的问题,但这并不理想。
我在页面中添加了一个额外的div,其中一个链接需要在用户位于队列前面时进行跟踪。我能够 - 从ajax成功方法中 - 隐藏解释进入队列的过程的部分,然后显示带有要遵循的链接的div。
但是,请求的行为是页面在用户到达队列前面时自动重定向。所以这是妥协。
如果有人能向我解释为什么我想要完成的是不可能的,请这样做。否则,如果有其他人知道我做错了什么,也请这样做。我很想给客户提供他期望的东西。