2013-05-18 20 views
1

我展示我的門戶Ajax login form各種用戶行爲,一旦成功登錄我想更新一些div's爲我用下面的代碼,jQuery ajaxStop()會進行遞歸調用嗎?如果是的話,如何阻止它?

$(document).ajaxStop(function(){ 

     $.get($(location).attr('href'),function(html){ 
     var $html = $(html); 
     $('#topBar').html($html.find('#topBar')); 
     $('#commentsForm').html($html.find('#commentsForm')); 
     }); 
    }); 

將上面的代碼導致任何遞歸調用Ajax?目前其工作如預期,但我想清楚地知道它。

更新:

我一直logajaxStop然後打印log message末遞歸那麼它清楚地表明,上面的代碼進行遞歸調用。

+0

你是如何確定它按預期工作的?您是否檢查過瀏覽器開發人員工具的網絡標籤? –

回答

2

我認爲這會導致遞歸。所有其他AJAX調用完成後,此處理程序將調用。它將啓動一個新的AJAX調用$.get(),並且當完成時它將觸發處理程序,該程序將調用$.get(),依此類推。

爲了防止這種情況,你可以這樣做:

$.ajaxSetup({ global: false }); 

,以防止全球AJAX處理程序的運行。或將$.get()替換爲等效的$.ajax()調用,並在其選項參數中使用global: false

+0

有沒有其他辦法呢?感謝您的回覆 –

+0

感謝它爲我工作,我可以通過保持日誌進行檢查。 –

0

是:http://jsfiddle.net/GghtK/

ajaxStop()偵聽所有未來的Ajax調用(你正在創建一個事件偵聽器ajaxStop事件,jQuery的觸發畢竟優秀的Ajax請求完成),那麼你正在創建從內一個新的Ajax請求當然作爲回報的回調將觸發ajaxStop事件。

相關問題