2012-05-11 22 views
2

我有我的服務器上的文件結構看起來是這樣的選擇:填充從服務器目錄PHP的jQuery AJAX

enter image description here

我的問題是比較複雜:我怎麼填充<select> html標籤逐漸從服務器的子文件的內容。

例如,下面我有3 <select>標籤鏡像上面顯示的文件結構。當第一個選擇被更改時,jQuery應該使用AJAX和PHP在服務器上找到該目錄,並將所有子文件列入第二個<select>。點擊第二個時,應該列出該文件夾的所有子文件,依此類推。最終我想有5 <select>標籤。

enter image description here

我認爲這是使用jQuery,檢測在選擇的變化很好地完成:

$("select").change(function() { 
     var selected = $(this).children("option:selected").text(); 
}); 

發送該變量AJAX,它要求一個PHP文件返回的數組該文件夾的子文件,然後用該數組中的數據填充下一個選擇。我不那麼自信的是PHP。

我試過的東西:看着TreeView系統 - 不合適。試圖修改TreeView系統與選擇一起工作 - 毫無結果!也許有人可以嘗試和修改我鏈接的那個?

在此先感謝,任何幫助將一如既往,非常感謝!

回答

1

填充選擇選項值與文件夾顯示目錄:

<div class="selects"> 
    <select name="folder1"> 
     <option value="folder1">folder1</option> 
     <option value="folder2">folder2</option> 
     <option value="folder3">folder3</option> 
    </select> 
</div> 

的jQuery:

// Use live. Because the other selects will be filled with jquery. 
$("select").live("change", function() { 
    var folder = $(this).val(); 
    var select_id = $(this).attr("name").replace('folder', ''); 

    $.ajax({ 
     url: 'ajax.php', 
     type: "POST", 
     data: {"folder": folder}, 
     success: function(data) { 
      var select = $("<select>"); 

      select_id++; 

      select.attr("name", "folder"+select_id).append(data); 
      $(".selects").append(select); 
     } 
    }); 
}); 

PHP的:

<?php 
    $shared = "some/path/to/shared/folders/"; 
    $folder = $_POST['folder']; 

    $scan = scandir($shared.$folder); 

    $bad = array(".", "..", ".DS_Store", "_notes", "Thumbs.db"); 

    $scan = array_diff($scan, $bad); 

    foreach ($scan as $val) 
    { 
     if (is_dir($shared.$folder.'/'.$val)) 
      echo '<option value="'.$folder.'/'.$val.'">'.$val.'</option>'; 
    } 
?> 

我沒有測試它可能會有一些拼寫錯誤,但這應該做的tric k

+0

嗨,謝謝你的好評!我似乎無法得到它的工作,看到這個鏈接http://jackdent.co。英國/ selecttest/ – jacktheripper

+0

如果你知道我的意思,它也顯示導航'點' - 有沒有辦法去除這些。 – jacktheripper

+0

我在php代碼上做了一些替換。嘗試像這樣 – Valour

1
  1. 一個新的水平就select變化通過JQuery的AJAX請求第一,在選擇附加的容器選擇,就像這樣:$('ajax_process.php #select_a').post()
  2. 設置您的接收AJAX頁面這樣的:

    //<?php 
    //work, etc 
    
    
    //you said "return array of the sub-files", so I reckon: 
    
    $select = "<select id='data'>"; 
    foreach ($array as $select_item) { 
        $select .= "<option value='$select_item'" . $select_item . "</option>"; 
    } 
    $select .= "</select>"; 
    
    
    //now $select contains your HTML code for your select box. 
    ?> 
    
    //break out of php, then: 
    <span id="select_a"> 
    <?php print $select; ?> 
    </span> 
    
  3. 您的AJAX呼叫現在可以返回您的動態選擇框。