javascript - Firefox javascript 在 ajax 回调结果中重定向导致白屏

标签 javascript ajax firefox redirect window.location

我尝试在 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;
    }
};

最佳答案

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

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

关于javascript - Firefox javascript 在 ajax 回调结果中重定向导致白屏,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13668917/

相关文章:

php - jQuery PHP 在函数内传递值与实时点击?

javascript - 通过 php 触发和重新触发 AJAX 的最佳方法

javascript - 绕过并发 ajax 调用限制的最佳实践

html - CSS选框,如何使文本从底部移动到顶部

html - Firefox 40.0.3 (Windows) 无法使用字体系列

html - Ubuntu 字体在 Firefox 中导致奇怪的选择边框

javascript - 正则表达式查找前面没有特定字符的字符

javascript - 如何在 ruby​​ on Rails 中将文本值迭代为 Active Record 模型名称格式?

javascript - .validate 规则 : check jquery var

javascript - 更新对象数组的替代方法是什么?