首页 > 解决方案 > 使用 Ajax 填充 Thymeleaf div 的下拉列表

问题描述

我有一个这样的 div

<div class="col-sm-4" id="notebooksDropdown">
    <select class="form-control" id="notebooks" name="notebooks">
        <option th:each="notebook : ${notebooks}" th:value="${notebook}" th:text="${notebook}"></option>
    </select>
</div>

我打了一个ajax调用来获取这样的笔记本

$.ajax({
   type: "GET",
   contentType: "application/json",
   url: "/getNotebooks",
   ...
   success: function (data) {
        ...
        //notebooks is the array with which I wish to populate the dropdown
        //this works fine
        for(i in notebooks){
            var options="<option value="+notebooks[i]+">"+notebooks[i]+"</option>";
            $(options).appendTo('#notebooks'); 
        }
   }

但是,在 ajax 中以某种方式设置 $notebooks 之后,我是否无法刷新下拉 div 标记,以便选项由 th:each 而不是我正在执行的方式填充。就像是:

//set $notebooks so the dropdown div can do its thing -> ??
//then refresh only that div
$( "#notebooksDropdown" ).load(window.location.href + " #notebooksDropdown" );

我是一名后端 Java 开发人员,对(js、jquery、thymeleaf)非常陌生,所以任何帮助都很有价值。

标签: jqueryajaxthymeleaf

解决方案


${notebooks} 是 thymeleafs 的 request.getAttribute("notebooks") 方式。我们知道在页面本身编译期间在服务器端得到解决,所以回答我的问题是我们不能在客户端 js 中填充/更改/(甚至访问)$ 变量。


推荐阅读