2011-06-13 78 views
2

如何在jQuery AJAX處理過程中添加加載gif?我閱讀了一些教程,他們使用beforeSend。但仍然沒有看到加載的東西。jquery ajax加載gif

<script src="jquery-1.6.1.min.js"></script> 
<script> 
$.ajax({ 
url: "index_2.php", 
dataType: "html", 
type: 'POST', 
data: "value=something", 
beforeSend: function() { 
    $("#result").html('<img src="loding.gif" /> Now loding...'); 
}, 
success: function(data){ 
    $("#result").html(data); //even add .delay(5000) 
} 
}); 
</script> 
<div id="result"></div> 

index_2.php

<?php 
sleep(5); 
echo $_POST['value']; 
?> 

index_2.php設置sleep(5);,它應該顯示在div#result 5秒londing.gif,直到index_2.php數據返回。

+1

是否有可能您的gif名稱錯誤?你在JS中指定'loding.gif',然後在問題文本中指定'londing.gif',但大概你的意思是'loading.gif'? – lonesomeday 2011-06-13 10:33:17

+0

您是否看到ajax請求的結果? – minikomi 2011-06-13 10:52:18

回答

3

可能是一個想法是調用Ajax請求加載圖像像你這樣即完成

$("#result").html('<img src="loding.gif" /> Now loding...'); 

隨後的onSuccess綁定數據

+0

$(document).html(' Now loding ...');將這項工作 – 2014-12-09 10:10:42

1

看一看的$.ajaxStart()功能,將執行,只要任何前Ajax請求開始(顯然)。

查看this question瞭解詳情。

2

有幾種方法。我的首選方法是將函數附加到元素本身的ajaxStart/Stop事件。

$('#loadingDiv') 
    .hide() // hide it initially 
    .ajaxStart(function() { 
     $(this).show(); 
    }) 
    .ajaxStop(function() { 
     $(this).hide(); 
    }) 
; 

ajaxStart/Stop函數會在您執行任何ajax調用時觸發。