2015-02-07 26 views
0

這裏是我的代碼是如何設置現在:

  • 用戶訪問該頁面

  • $.getJSON將在某個鏈接PHP腳本的請求

  • PHP調用scandir()創建圖像的名字的數組(100S-1000S,但最終僅有少數現在進行測試,因此需要添加分頁)

  • 回聲一個json_encoded陣列

  • $.each項被用於創建字符串變量,它是一個新標記

  • 前置字符串變量一個div容器是圖像的內聯顯示

這裏就是我想要做的事:

  • 加載了50項與阿賈克斯同時

  • 弄清楚如何使用$.each,使其與50項要求工作

  • 找出使用$.getJSON使得不是圖像的所有XXXX號碼以不同的方式請立刻

我的問題:

  • 我怎麼能作出這樣的醫療救助請求在用戶點擊這些頁面的整個過程中,JavaScript事件的頂部只有一次保持活動狀態?

Php從scandir創建數組看起來不像是一個問題......也許一次返回整個數組是一個問題,但我不知道如何創建一個等待用戶請求的循環(點擊'next'或'prev')迭代到數組中的下50個圖像。

我想最好的工作地點會在$.each之前或之內,以某種方式使用一個循環等待接下來的ajax請求來創建接下來的50個標籤並將它們預先加入到。

下面的代碼:

 requestServer('ajax.php', flag); 
      $('#Container').fadeIn('slow'); 
      $('.close_button').click(function() { 
       $('#Container').fadeOut('slow'); 
       $('#welcome').fadeTo('slow',1); 
       $('#i1,#i3,#i5').click(clickFade).mouseover(mouseOverFunc); 
       $('#welcome').css({'position':'absolute','z-index':'10'}); 
      }); 
      flag = false; 
      break; 

    function requestServer(file, run_flag) { 
     if (run_flag === true) { 
      $.getJSON(file, function(data) { 
       $.each(data, function(key, val) { 
        var html = "<img src='../images/"+val+"' style='display:inline' alt=null />"; 
        $('#Container').prepend(html); 
       }); 
      }); 
     } 
    } 

<?php 
    $images = scandir('../includes/scrapedImages/'); 
    foreach ($images as $key => $image) { 
     if ($image == '.' || $image == '..') { 
      unset($images[$key]); 
     } 
    } 
    echo json_encode($images); 
?> 

回答

0

似乎浪費掃描每個請求您的圖像目錄。

就我個人而言,我會編寫一個PHP腳本,每X分鐘掃描一次目錄(或在圖像上傳時調用)。讓它編碼爲JSON,並將輸出保存爲服務器上某個.json文件。

在客戶端,$.get表示JSON文件。創建50個圖像元素,並將其.src設置爲您從JSON文件中檢索的網址。在頁面底部有一個前進/後退按鈕,只需將這50個圖像元素.src重新設置爲下一個/上一個設置。

或者,您也可以創建DOM以外的img元素,然後設置一個interval改變該元素的.src每ž毫秒。即使瀏覽器未附加在DOM中,瀏覽器也會下載圖像,並且這些加載的圖像將被緩存。

祝你好運:)