如果同一Ajax请求被多次触发,Safari将阻止JQuery
这可能是一个愚蠢的问题,但我无法在Safari(8.0)中实现这一点。我有一个进度条,上传文件时会自动更新。它在FF和Chrome中都能完美工作,但Safari不会更新我的视图。如果我没有弄错的话,那么Safari不会处理同步事件,这意味着浏览器会阻止后面的每个JQuery。在我看来,这并不重要,因为一项任务在下一项任务启动之前就完成了 有人能帮我吗?我很困惑 谢谢大家! 我有以下资料:如果同一Ajax请求被多次触发,Safari将阻止JQuery,jquery,ajax,asynchronous,safari,Jquery,Ajax,Asynchronous,Safari,这可能是一个愚蠢的问题,但我无法在Safari(8.0)中实现这一点。我有一个进度条,上传文件时会自动更新。它在FF和Chrome中都能完美工作,但Safari不会更新我的视图。如果我没有弄错的话,那么Safari不会处理同步事件,这意味着浏览器会阻止后面的每个JQuery。在我看来,这并不重要,因为一项任务在下一项任务启动之前就完成了 有人能帮我吗?我很困惑 谢谢大家! 我有以下资料: // main Ajax call function test() { $.ajax({
// main Ajax call
function test() {
$.ajax({
url : 'getProgressBarPercentage',
type: 'GET',
data: 'key=fileUpload',
async: false,
success: function(res) {
console.log(res); // I do see all values in the console log
var percentVal = res + "%";
$('#pTesting').attr('aria-valuenow', '100').css('width', percentVal); // this only works in Chrome and FF
},
error: function(res) {
console.log('FAIL');
},
complete: function(res) { doAgain(); } // if Ajax request is complete ...
});
}
// ... fire test() again
function doAgain() {
setTimeout(function(){test();},500);
}
// triggers event after hitting an upload button
$(document).ready(function () {
$("#uploadSubmit").click(function () {
test();
});
});
找到了答案。它与Safari无关,但编码很糟糕。重要的是在相关控制器操作中定义正确的返回值 查看详细说明