2012-09-25 89 views
1

我有以下代碼,我試圖通過'whatever.php'獲取一些數據。這個PHP文件花費大約20秒來獲取數據庫請求。在服務器回答數據之前,導航器被阻塞(如果我使其成爲異步的,它允許我點擊或填充輸入,但它只在提到的20秒後重定向)。我嘗試中止這個ajax實例,但是在中止之後,它也等待了這個時間。異步Ajax請求塊導航器?

我想要做的是,如果用戶不想等待請求完成並顯示錶,他應該能夠打開一個鏈接到其他子頁面。

var contenidoAjax = $('div#table_solicitudes').html('<p><img src="'.URL.'images/ajax-loader.gif" /></p>'); 
var instanciaAjax=$.ajax({ 
url: whatever.php, 
success: function(data) { 
    if (data == "bad") { 
     $('div#table_solicitudes').html("Went bad"); 
    } 
    else { 
     $('div#table_solicitudes').html(data); 
    } 
} 

感謝您的時間!

+0

請刪除您的代碼中的轉義 – Bergi

+0

請求異步(是不是已經?)和預期的行爲之間有什麼區別? – Bergi

+0

是的,它是異步的。這就是我提出這個問題的原因。這個代碼應該按我的理解工作嗎? –

回答

1

您應該使用「beforeSend」和「complete」方法來顯示和隱藏指示器。

例子:

$.ajax({ 
    url: whatever.php, 
    beforeSend: function(){ 
     $('div#table_solicitudes').html('<p><img src="'.URL.'images/ajax-loader.gif" /></p>'); // add indicator 
    }, 
    complete: function(){ 
     $('div#table_solicitudes').html(""); // remove indicator 
    } 
    // existing stuff 
} 

希望這將幫助!

+0

謝謝,但它與此無關,因爲我將以單獨的答案張貼。 –