2010-08-09 79 views
0

下面的代碼完成了我所需要的大部分工作。每次將新圖像加載到頁面上時,都會運行該功能。但是,這已經創建了100個服務器請求到同一個XML文件..這是不好的說實話。
那麼我如何重新排列這個函數,所以只使用了1個xml請求(即使我將1個元素拉出i = id,整個xml文件仍然被緩存),所以我知道我可以使用它。通過AJAX導入XML文件

function loadImages(i){ 
i++; 
$.ajax 
    ({ 
     type: "GET", 
     url: "sites.xml", 
     dataType: "xml", 
     async: "true", 
     success: function(xml) 
     { 
// these are the id's of images i do not want to load 
      var a = [2,3,4,5,6,7,8,9,19,18,60,61,50,49,79,78,81,82,80,70,90,91,92,93,94]; 

      if (a.indexOf(2) !== -1) { // do this if not an 1 of the id's above 
      var img = $(xml).find('image[id=' + i + ']'), 
      id = img.attr('id'), 
      url = img.find('url').text(); 

      $('#loading'+i).html('<img src="'+url+'" onLoad="loadImages('+i+')" />').hide(); 
      $('#loading'+i).fadeIn(); 
      } 
     } 
    }); 
} 

回答

0

您可能想要使用AjaxQ插件。

  • 徵收的瀏覽器打開的連接到服務器 的數量是有限的。所有不適合 的請求都將等待 運行。默認情況下,Internet Explorer 每個服務器一次打開的連接數不超過2個連接 。 Mozilla Firefox,Opera和Safari有 每個服務器有8個連接的限制。

  • 有時需要避免同時發生AJAX請求的大量 氾濫服務器。

  • Web應用程序需要AJAX請求按設計逐個運行, 這個順序很重要。
+0

剛剛瀏覽了一下,它看起來像用於多個xml文件。我的問題是我只有1個XML文件,並且它讀取100次。 查看此屏幕截圖:http://img14.imageshack.us/img14/7321/96968992.jpg – 2010-08-09 09:34:26

+0

@Adam:它與xml文件無關,它允許您延遲和/或限制您的ajax請求。 – Sarfraz 2010-08-09 09:38:59