2012-01-07 162 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

相关问题