2014-03-07 27 views
2

我使用blockUI jQuery插件AJAX調用:

//start the plugin 
App.utilities.Loading(); 

$.ajax(url, { 
    type: "POST", 
    contentType: 'application/json', 
    data: JSON.stringify({ 
    "textcontent": content 
    }), 
    success: function (data) { 
    $.mobile.navigate('discussion.html'); 
    $.unblockUI(); 
    } 
}); 

有時加載時間超過三秒鐘,如果用戶按下後退按鈕,在調用$ .unblockUI()後觸發後臺事件;在插件處於打開狀態並取消Ajax調用期間,有沒有辦法返回?

我可以得到該塊UI的狀態:

var isUIBlocked = $('.ui-widget-overlay:visible').length > 0; 

什麼想法?

回答

3

你可以試試下面的代碼

//start the plugin 
App.utilities.Loading(); 

//assign the ajax call to a xhr object 
var xhr = $.ajax(url, { 
    type: "POST", 
    contentType: 'application/json', 
    data: JSON.stringify({ 
     "textcontent": content 
    }), 
    success: function (data) { 
     $.mobile.navigate('discussion.html'); 
     $.unblockUI(); 
    } 
}); 

//when back button is being clicked 
window.onbeforeunload = function (e) { 

    xhr.abort(); //abort the above ajax call 

    var isUIBlocked = $('.ui-widget-overlay:visible').length > 0; 
    if(isUIBlocked) { 
     $.unblockUI(); 
    } 
}  

進一步閱讀的jquery.ajax功能的jqXHR對象:http://api.jquery.com/jQuery.ajax/#jqXHR