2

我想在我的應用程序全局使用模式窗口,所以設置jQuery的ajax完整和ajax啓動配置。我有一個問題,從ajax成功回調中調用的模態窗口與我的ajax通知模式衝突,因爲它們沒有按照我想要的順序執行。ajax請求模式訂購與引導

在本演示中,我希望它提醒1,然後2,然後3,但它首先執行成功處理程序...

http://jsfiddle.net/AsRxL/

$(document).ajaxStart(function(){ 
    alert("1") 
    $("#first").modal("show") 
}) 
$(document).ajaxComplete(function(){ 
    alert("2") 
    $("#first").modal("hide") 
}) 

$.get('./',function(d, e){ 
    alert("3") 
    // now the problem is the previous modal has not 
    // yet fully dismissed 
    $("#second").modal("show") 
}) 

我怎樣才能獲得ajaxComplete功能在執行任何回調函數之前刪除我的通知模式,而這些函數本身可能會創建模態窗口?

+0

模式並不立即消失,你可能需要聽隱藏事件以及 –

回答

0

爲什麼他們沒有在你想爲了執行其原因是在jQuery的文檔(http://api.jquery.com/ajaxComplete/http://api.jquery.com/ajaxStart/

AjaxStart事件觸發之前,你的Ajax請求的實現。

AjaxComplete事件觸發器在你的ajax完成實現後。

$(document).ajaxStart(function(){ 
    alert("AjaxStart"); 
}); 

$(document).ajaxComplete(function(){ 
    alert("AjaxComplete"); 
}); 

$.get('./',function(d, e){ 
    alert("Get A Start") 
}).done(function(){ 
    alert("Get A Done"); 
}); 

$.get('./',function(d, e){ 
    alert("Get B Start") 
}).done(function(){ 
    alert("Get B Done"); 
}); 

所以,如果你運行這個小提琴(http://jsfiddle.net/KbzCk/),你會看到執行的正確順序。

如果您使用的引導模式3,嘗試檢查活動部分

$('#modal-id').on('hidden.bs.modal', function() { 
    //show another modal 
}) 

即使,顯示出如此多模態窗口似乎不是好辦法。

如果您使用的模式只是爲了通知,請嘗試使用toastr:http://www.johnpapa.net/toastr100beta/

+0

感謝您的想法。 Toastr很好,但在我們的情況下,我們需要模態窗口來阻止ui,直到完成Ajax調用。 –