2012-12-02 61 views
0

我想火狐從當前地址重定向URL_1在Ajax回調函數url_2這樣做:的Firefox的JavaScript在Ajax回調結果重定向白屏

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; 
    } 
}; 
+0

你的代碼的其餘部分是什麼? – Hawiak

回答

0

掛起是由回調函數引起的。由於AJAX調用未完全關閉,垃圾收集器在嘗試卸載頁面之前會在到達請求的url_2之前創建問題。除了直接具有在AJAX onSuccess回調您window.location.replace()

,您可以使用setTimeout(window.location.replace(),5);這樣就可以解決問題,因爲這將異步執行任務,AJAX閉合之外。

+0

謝謝你有關回調函數的好主意。 我剛剛嘗試了所有上述方法setTimeout - 結果仍然是相同的白色屏幕。 :-( –

+0

對不起,我確信是問題所在,你可以發佈更多的代碼嗎? – Salketer