Firefox javascript重定向在ajax回调结果白屏

时间:2012-12-02 11:39:40

标签: javascript ajax firefox redirect window.location

我正在尝试将Firefox从当前地址 url_1 重定向到ajax回调函数中的 url_2

window.location = url_2 

执行此行代码后,地址行显示相同的 url_1 ,但浏览器窗口只显示白屏,并在此状态下挂起。

我尝试了同样的负面结果的不同方法:

window.location.assign(url_2)

window.location.replace(url_2)

window.location = url_2
return false;

window.location.href = url_2 

此外,我注意到在window.location之前插入警报('某事')会导致Firefox正常工作,并且在对话窗口关闭后重定向到 url_2

其他浏览器可以毫无问题地进行重定向。

如何解决这个问题?

其余代码:

initializeViewModels = function (data, submitUrl) {

    // Handler of "submit" button click
    $(".submit").click(function () {
        var json = ko.toJSON(window.viewModel);

        //Submiting data to the server
        $.ajax({
            url: submitUrl,
            type: 'POST',
            dataType: 'json',
            data: json,
            contentType: 'application/json; charset=utf-8',
            success: callback
        });
    });

    var callback = function (data) {
        var url_2 = window.myViewUrl + '/' + data.Id.toString();
        window.location = url_2;
    }
};

1 个答案:

答案 0 :(得分:1)

挂起是由回调函数引起的。由于AJAX调用未完全关闭,因此垃圾收集器在尝试在到达请求的url_2之前卸载页面时会产生问题。

不要直接在AJAX window.location.replace()回调中使用onSuccess行,而是可以使用setTimeout(window.location.replace(),5);来修复问题,因为这将在AJAX闭包之外异步执行任务