在选定的值上填充下拉列表

时间:2016-02-15 20:45:12

标签: javascript jquery spring

我有目录列表,这些目录是包含模板的主题。我在主题列表中列出了主题下拉列表,当任何主题被选中时,它将使用其(所选主题' s)模板填充其他下拉列表。

这是我的javascript代码我可以在选择主题后获取模板列表,但是当我尝试更改它时,它会复制模板下拉列表中的值。



$('#theme').on('change', function() {
  var selectedTheme = $(this).find('option:selected').val();
  $.ajax({
    url: '/admin/content/templates?theme=' + selectedTheme,
    type: 'GET',
    dataType: 'json',
    contentType: "application/json",
    data: JSON.stringify(selectedTheme),
    success: function(data) {
      console.log(data)
      $.each(data, function(idx, value) {
        $('#template').append('<option>' + value + '</option>');            
      });
    },
    error: function(data) {
      console.log("There are some errors")
    }
  });
});
&#13;
&#13;
&#13;

这是获取主题模板的控制器方法。

// getting the list of available templates
    @RequestMapping(value="/templates", produces="application/json")
    @ResponseBody
    List<String> getTemplates(@RequestParam("theme") String theme) {
        String path = "src/main/webapp/WEB-INF/views/themes/" + theme
        List<String> templates = []
        new File(path).eachFileMatch(~/.*.twig/) { file->
            file.path
            templates.add(file.getPath())
        }
        templates
    }

任何人都可以告诉我为什么它会复制模板下拉列表中的值吗?

2 个答案:

答案 0 :(得分:1)

尝试添加一行以清除模板下拉列表,然后重新填充:

success: function(data) {
      console.log(data)
      $('#template').empty(); //<======
      $.each(data, function(idx, value) {
        $('#template').append('<option>' + value + '</option>');            
      });
    },

答案 1 :(得分:1)

您可以将数据存储在字符串中,并使用int[,] Matris = new int[column,row]; 转储它:

html

我认为与在每个循环上书写相比,这会更高效。