1

我正在尝试在 ajax 回调函数中将 Firefox 从当前地址url_1重定向到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 之前插入 alert('something') 会导致 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;
    }
};
4

1 回答 1

1

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

您可以使用它来解决问题,而不是直接将您的window.location.replace()行放在 AJAX回调中,因为这将在 AJAX 闭包之外异步执行任务。onSuccesssetTimeout(window.location.replace(),5);

于 2012-12-03T13:15:15.643 回答