2011-08-04 36 views
1

我有一個Facebook登錄按鈕,用戶登錄。登錄後,我收集他們的憑據,並將它們登錄到會話中。然後AJAX調用後,我刷新這樣的頁面使用JavaScript:Javascript location.reload(true);弄亂我的請求和阿賈克斯呼籲

location.reload(true); 

這似乎是混亂請求變量和AJAX不會被調用。在刷新之前是否有辦法等待ajax調用完成?

在這種情況下,人們通常會做什麼?

謝謝!

PS - 如果有人想試試我這個測試頁面上測試此:http://www.comehike.com/test_fb_connect.php

回答

2

爲什麼不把刷新回調?

request.onreadystatechange = function(){ 
    if (request.readyState == 4){ 
     var xmlDoc = request.responseXML; 
    } 
    location.reload(true); 
} 

onreadystatechange回調函數在ajax請求完成後被調用。所以這是當你想刷新頁面,因爲你知道所有的Ajax的東西都完成了。如果在回調之後放置location.reload(true),它將在回調之前運行。 request.send(null)onreadystatechange回調之前運行。

+0

沒有意識到這是一種選擇。我與js和ajax蹩腳:) – Genadinik

+0

你的代碼到底有什麼不同?你拿出request.send(null); ...效果如何? – Genadinik

+0

順便說一句,這似乎沒有工作:( – Genadinik

1

試試這個:

self.location = 'your.link'; 

奧德:

window.location.reload();