如果多次触发相同的Ajax请求,Safari会阻止JQuery

时间:2014-11-18 01:46:53

标签: jquery ajax asynchronous safari

这可能是一个愚蠢的问题,但我无法在Safari(8.0)中使用它。我有一个进度条,在上传文件时应自动更新。它在FF和Chrome中完美运行,但Safari不会更新我的视图。如果我做对了,那么Safari不会处理同步事件,这意味着浏览器会阻止每个后续的JQuery。在我看来,这并不重要,因为一个任务在下一个任务被解雇之前完成。

有人可以帮我这个吗?我很困惑......

谢谢!

我有以下内容:

// 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();
    });
});

1 个答案:

答案 0 :(得分:0)

找到答案。它与Safari无关,但编码错误。在相关的控制器操作中定义正确的返回值非常重要。

检查here.以获取详细说明。