如何根据第一个下拉列表的值填充$ .ajax()中的第二个下拉列表?

时间:2012-01-07 08:10:37

标签: jquery jsp

我通过应用以下案例填写了两个下拉列表:

  1. 使用所有文件夹名称填写第一个下拉列表(使用File类完成)。
  2. 使用子文件夹名称填写第二个下拉列表,该名称现在基于第一个下拉列表。
  3. 所以我的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()成功部分数据中收到的值以填充我的第二个下拉列表?

1 个答案:

答案 0 :(得分:1)

您的JS代码可以简化为

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

获得此值后,向服务器发送AJAX请求(类似.../getSubFolders?rootFolder=<the root folder>)。服务器可以使用JSON子文件夹数组来回答,也可以直接使用HTML来回答第二个选择框。在AJAX请求的回调函数中,使用从服务器收到的内容填充第二个选择框。

http://api.jquery.com/category/ajax/。根据您选择的策略,您可以使用get()getJSON()甚至load()