2010-05-13 114 views
1

我使用下面的代碼加載圖像的顯示:延遲使用jQuery + AJAX

$.ajax({ 
     url: "pgiproxy.php", 
     data: ({ data : $("#formdata").serialize(), mode : "graph"}), 
     success: 
      function(result){ 
       var temp = $('<div/>').html(result); 
       var val = temp.find('center').html(); 
       $('#BFX').html(val); 
      }, 
     error: 
      function(){ 
       $("#error").html("ERROR !!!"); 
      } 
    }); 

從AJAX調用「pgiproxy.php」的「結果」是一個完整的網頁(返回爲字符串),然後將其轉換爲jQuery對象並存儲在'var'中。然後使用存儲在'val'中的.find()提取我需要的數據(.gif圖像)。然後將該圖像插入#BFX div中進行顯示。

我的問題是每隔一段時間我點擊我的按鈕來更新這個圖像,它顯示圖像從上到下加載,因爲它從網上讀取它。有沒有一種方法可以在完全加載後才顯示此圖像,以便用戶不會看到加載的圖像,只能立即看到圖像更改。

+1

它不是你的問題的答案,但你看看.load()?它是你在上面嘗試做什麼的簡寫。 :$('#result')。load('ajax/test.html #container'); 更多的信息: http://api.jquery.com/load/ 至於你的問題,你有沒有嘗試通過ajax拉圖像,然後插入它? (我的意思是在你從第一次調用返回的標記中獲得URL後,另一個Ajax調用圖像URL)HTH – DannyLane 2010-05-13 15:15:42

+0

嗨丹尼,感謝您的迴應,我嘗試使用.load()但結果相同,但我仍然看到所有返回的數據在加載時顯示。 – niczoom 2010-05-14 01:29:54

回答

2

使用上<img>

隱藏圖像.load()負載事件第一則顯示它當負載完成...

quick demo看代碼

+0

感謝您的回覆,我喜歡這些演示,也喜歡'JS Bin',我從未見過它之前,我喜歡代碼/預覽選項。 我喜歡隱藏然後顯示加載完成的想法。有一些想法可以保持原始圖像的顯示,然後在加載完成後顯示新圖像。謝謝你的幫助,Nic。 – niczoom 2010-05-14 12:34:50

0

您可以手動完成所有操作:在後臺加載圖像,然後將其插入到頁面中。有幾篇文章中詳細討論的話題,包括這一個:
http://jqueryfordesigners.com/image-loading/

+0

hi nikita,圖像是從ajax調用中通過使用「.find('center')。html();」(因爲該圖像嵌入在HTML

標記中)中提取的數據中提取的,一旦我有了這個html然後將數據插入到名爲#BFX的Div中,在任何階段都沒有發生$(img).load()事件.. – niczoom 2010-05-14 02:22:51