我尝试在 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
这应该可以解决问题,因为这将在 AJAX 闭包之外异步执行任务。onSuccess
回调中使用 window.location.replace()
行),5);
关于javascript - Firefox javascript 在 ajax 回调结果中重定向导致白屏,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13668917/