问题描述
我有一个脚本,当值> = 100时会重新加载页面,问题是location.reload(true);。 在IE11中不工作,我也尝试过window.location = self.location.href; 但是我遇到了同样的问题,在其他浏览器中效果很好。
$(function () {
if (value < 100) {
var timer = setInterval(function () {
$.ajax({
type: "GET",
url: $("#ancUrl").attr('href'),
data: {},
success: function (msg) {
console.log("This is msg:" + msg);
var msgInt = parseInt(msg);
if (msgInt > value)
value = msgInt;
},
error: function (err) {
console.log(err.responseText);
},
dataType: "json"
});
$("#progress-bar").width(value.toString() + "%");
if (value >= 100) {
clearInterval(timer);
window.location = self.location.href;
}
}, 2000);
}
});
1楼
您似乎在任何地方都没有定义self
,因此在此处可能会出错。
除此之外,您还尝试将href
的值分配为location
的整个值-这意味着它是一个对象。
相反,请尝试:
window.location.href = window.location.href;
2楼
将if放置在成功函数中,ajax是异步的,if将立即执行,但是ajax完成后值将更改,因此代码可能永远不会到达if语句
$(function () {
if (value < 100) {
var timer = setInterval(function () {
$.ajax({
type: "GET",
url: $("#ancUrl").attr('href'),
data: {},
success: function (msg) {
console.log("This is msg:" + msg);
var msgInt = parseInt(msg);
if (msgInt > value) {
value = msgInt;
$("#progress-bar").width(value.toString() + "%");
if (value >= 100) {
clearInterval(timer);
location.reload(true);
}
}
},
error: function (err) {
console.log(err.responseText);
},
dataType: "json"
});
}, 2000);
}
});
3楼
尝试将if语句移到成功回调中。
这样,您可以将间隔清除到同一堆栈中,然后重新加载页面。
$(function() {
if (value < 100) {
var timer = setInterval(function() {
$.ajax({
type: "GET",
url: $("#ancUrl").attr('href'),
data: {},
success: function(msg) {
console.log("This is msg:" + msg);
var msgInt = parseInt(msg);
if (msgInt > value)
value = msgInt;
$("#progress-bar").width(value.toString() + "%");
if (value >= 100) {
clearInterval(timer);
window.location = self.location.href;
}
},
error: function(err) {
clearInterval(timer);
console.log(err.responseText);
},
dataType: "json"
});
}, 2000);
}
});