2012-01-07 192 views
1

我有兩個下拉列表通過應用下列情況下,以填補:

  1. 填寫的第一個下拉與所有的文件夾名稱(通過使用File類來完成)。
  2. 使用現在基於第一個下拉列表的子文件夾名填寫第二個下拉列表。

所以我的jQuery的部分是:

$('#rootFolder').change(function() { 
    var rootFoldervalue = $(this).options[$('#rootFolder').selectedIndex]; 

如何選擇這個值rootFolder發送到我的JSP頁面,這樣我可以再次計算subFolder名,並顯示在第二個下拉?

getsubfolder.jsp

<% 
    String root = request.getParameter("foldername"); 
    String path = "G:\\ANDROID\\"; 
    File rootFile = new File(path); 
    File[] listOfDirs = rootFile.listFiles(); 
    out.println(listOfDirs); 
%> 

jQuery的部分:

$(document).ready(function() { 
    $("#rootFolder").change(function() { 
     var rootFolderValue = $('#rootFolder').val(); 
     $.ajax({ 
      url: 'getsubfolder.jsp', 
      data:'foldername=' + rootFolderValue, 
      dataType: 'json', 
      success:function(data) { 
       $.each(data, function(i, data) { 
       $('#subFolder').append(
        $('<option></option>').val(data.Value).html(data.Text) 
       )}); 
      } 
     }); 

傳輸文件數組作爲JSON不工作。我如何處理$.ajax()成功部分的數據中收到的值以填充我的第二個下拉列表?

+0

問題出在你的'getsubfolder.jsp'上。它顯然沒有返回一個有效的JSON字符串。你需要顯示'getsubfolder.jsp'的代碼,以便我們可以指出你的錯誤。與此同時,在這裏學習JSON格式:http://json.org。 – BalusC 2012-01-09 13:02:32

回答

1

你的JS代碼可以簡化爲

var rootFolderValue = $(this).val(); 

一旦你有了這個值,發送一個AJAX請求到服務器(像.../getSubFolders?rootFolder=<the root folder>)。服務器可以使用JSON數組子文件進行回答,也可以直接使用HTML進入第二個選擇框。在您的AJAX請求的回調函數中,使用從服務器收到的內容填充第二個選擇框。

請參閱http://api.jquery.com/category/ajax/。根據您選擇的策略,您可能會使用get(),getJSON()甚至load()

+0

我根據通過$ .ajax數據接收到的值在一個jsp文件中打印了子目錄列表。然後該值將被成功部分捕獲。但我無法將值打印到第二個組合框。請幫助我下面的代碼: – HungryProgrammer 2012-01-08 09:09:52

相關問題