我有一个脚本,当值> = 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);
}
});
答案 0 :(得分:0)
您似乎没有在任何地方定义self
,因此您可能在这里有错误。除此之外,您还尝试将href
的值分配为location
的整个值-这是一个对象。相反,请尝试:
window.location.href = window.location.href;
答案 1 :(得分:0)
将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);
}
});
答案 2 :(得分:0)
尝试将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);
}
});