2016-01-23 21 views
1

我有下面的代碼獲取文件夾的目錄通,自動獲取輸入ID值,並使用AJAX

<?php 

$path = 'templates'; 
$files = scandir($path); 

foreach($files as $result) { 
    if ($result != "." && $result != ".." && $result != "desktop.ini") 
    { 
       echo '<img src="img/folder.png" width="40px"><a name="'.$result.'" class = "folderLink" href="#">'.$result.'</a> <input type="hidden" name="'.$result.'" value="'.$result.'"></img><br><div class="fileListInner"></div>'; 
    } 

} 
?> 

以上代碼返回的文件夾名稱的動態數量。此代碼工作正常,並顯示成功的文件夾列表。這裏是我的表格,

<form id="t-files"> 
    <a style="margin-left:160px;" class="list-directories" href="#">Select File Path</a><br><br> 
    <div id="fileList"></div> 
</form> 

現在我想進入每個文件夾和列表子文件夾。要做到這一點,我得到每個鏈接的類名稱,並點擊甚至調用ajax函數。這裏是代碼,

// load directories - inner (settings) 

    $(document).on("click",".folderLink",function(e){ 
      e.preventDefault(); 
      $.ajax({ 
      type: 'post', 
      url: 'list-directories-inner.php', 
      dataType: 'text', 
      data: $('#t-files').serialize(), 
      success: function (data) { 
       $('#fileList').html(data); 
      } 
      }); 
      exit(); 
    });  

和列表目錄,inner.php文件,

<?php  

foreach ($_POST as $key => $value){ 
    echo "".$key."<br>"; 
} 
$path = 'templates'; 
$files = scandir($path); 

foreach($files as $result) { 

    if ($result != "." && $result != ".." && $result != "desktop.ini") 
    {  
      // echo '<img src="img/folder.png" width="40px"><a href="#">'.$result.'</a></img><br>'; 

    } 

} 
?> 

我如何可以通過點擊鏈接(隱藏輸入)名稱值,而不是通過所有的隱藏價值?因爲在list-directories-inner.php文件中我想要點擊鏈接值來設置路徑。像「模板/後期價值」。我在想幾個小時。請幫忙。

+0

什麼是「隱藏輸入」? – Gavriel

+0

你可以在我的問題的第一個代碼片段中看到它。通過php腳本發送。 –

回答

1

不知道哪一個環節你談論ECT但我收集了以下內容:

<img src="img/folder.png" width="40px"><a name="'.$result.'" class = "folderLink" href="#">'.$result.'</a> <input type="hidden" name="'.$result.'" value="'.$result.'"></img><br><div class="fileListInner"></div> 

如果是這樣,你可以在$result值,將鏈接添加爲數據屬性,這樣:

<img src="img/folder.png" width="40px" /><a name="'.$result.'" class = "folderLink" href="#" data-path="'.$result.'">'.$result.'</a><br><div class="fileListInner"></div> 

注意data-path屬性。然後獲取點擊事件的值。

$(document).on("click",".folderLink",function(e){ 
     e.preventDefault(); 
     var path = $(this).data('path'); 
     getInnerDirectoryList(path); 
    }); 

    function getInnerDirectoryList(path){ 

     $.ajax({ 
     type: 'post', 
     url: 'list-directories-inner.php', 
     dataType: 'text', 
     data: {path_url: path}, 
     success: function (data) {...}, 
     error: function(msg){....} 
     }); 

    } 

可能有類似上面的東西?

這裏是一個簡單的版本jsbin: https://jsbin.com/yajefi/edit?html,js,output

+0

有5個鏈接(具有基於文件夾數目的同一班級)。這不起作用。我認爲這部分var path = $(this).data('path'); 。 「路徑」的含義是什麼? –

+0

它的數據屬性值'data-path =''。$ result。'「'所以點擊一個鏈接,你就可以得到數據路徑的值,並將其分配給路徑變量,然後通過ajax發送 –

+0

我已經添加了一個鏈接到一個簡單的工作方法 –

0

你應該嘗試聲明一個函數,它的點擊文件夾,其中將包含代替它被調用每個通用功能所需的字段輸入ID點擊一個.folderLink類。

+0

在這種情況下動態生成輸入。沒有固定數量的輸入。所以每次我們必須編寫函數來跟蹤每個輸入上的點擊事件 –

0

西蒙的答案應該可以工作,但這裏有一個選擇。

您可以像這樣獲取隱藏輸入的值(因爲它與隱藏輸入的名稱相同)。

$(document).on("click",".folderLink",function(e){ 
     var folder = $(this).siblings('input:hidden').val(); 
     e.preventDefault(); 
     $.ajax({ 
     type: 'post', 
     url: 'list-directories-inner.php', 
     dataType: 'text', 
     data: {folder: folder}, 
     success: function (data) { 
      $('#fileList').html(data); 
     } 
     }); 
});