2011-06-28 38 views
0

我想添加一個加載圖像,這將在jQuery中的ajax請求的開始和結束之間可見。ajax請求開始和結束之間的「加載圖像」

目前,我想用一個加載圖片更換單擊按鈕時,這個函數被調用:

function test(num) 
{ 
      $("div.bd_img").attr("style", "display:none"); 
      $("div.ajax_load").attr("style", "display:block"); 
      str = "ajax?id=" + num.toString(); 

      $.ajax({ 
       type: "GET", 
       url: str, 
       dataType: "xml", 
       success: test2 
      }); 
      $("div.bd_img").attr("style", "display:block"); 
      $("div.ajax_load").attr("style", "display:none"); 

} 

但它似乎沒有奏效。

bd_img和ajax_load這兩個分區是div的孩子,所以當顯示設置爲none時,應該用另一個替換另一個div,反之亦然。

回答

2

檢查你的test2方法。我也會將你的圖像切換到你的成功回調。

success: function() { 
    $("div.bd_img").show(); 
    $("div.ajax_load").hide(); 

    test2(); 
} 

檢查,以確保您的DIV卻有類bd_img和ajax_load那類是不實際的圖像上。現在你說你的div有'.bd_img'或'.ajax_load'類。如果是帶類,那麼你想在div內的圖像...

$("div .bd_img").show(); 
$("div .ajax_load").hide(); 
+0

幹得好,這個修好了:)。 – Tool

3

禁用回調函數(你的情況test2)裝載機

Ajax調用定義是異步的。您當前的代碼將會觸發ajax GET,然後直接進入禁用加載器。如果您在ajax調用的回調中禁用加載器,則應該看到您期望的行爲。

+0

你的意思是隻刪除succes:...線?試過,沒有幫助:/。 – Tool

+0

@Tool:不,完全沒有。 'test2'是你的回調函數,因此在ajax調用完成後運行。如果您移動代碼以將加載圖像隱藏到該功能中,它將起作用。基本上,究竟是什麼bdparrish說只有他的例子使用匿名函數來禁用調用'test2'之前的加載圖像。 – Town

1

您應該切回test2中的圖像。 Ajax調用區域異步,所以$.ajax(...)立即返回,而不是在請求完成時返回。

有沒有想過阿賈克斯的A代表什麼? :-)

1

我會用ajaxStart and ajaxStop這將使你的整個應用程序的工作,保持代碼在一個地方,容易被修改等

相關問題