我有一个 JSP,其中有一个select
包含实体种类名称的列表。当我选择一个实体种类时,我需要select
用所选实体种类的字段名称填充另一个列表。为此,我在onchange
事件上调用了一个 JavaScript 函数。
在 JavaScript 方法中,我需要在后端调用一个方法,该方法返回一个arraylist
包含所选实体类型的字段名称的方法。
如何在有和没有 Ajax 的情况下调用该方法?另外,如何使用 ? 动态填充第二个选择列表arrayList
?
我有一个 JSP,其中有一个select
包含实体种类名称的列表。当我选择一个实体种类时,我需要select
用所选实体种类的字段名称填充另一个列表。为此,我在onchange
事件上调用了一个 JavaScript 函数。
在 JavaScript 方法中,我需要在后端调用一个方法,该方法返回一个arraylist
包含所选实体类型的字段名称的方法。
如何在有和没有 Ajax 的情况下调用该方法?另外,如何使用 ? 动态填充第二个选择列表arrayList
?
我将描述两种方法:使用/不使用 AJAX。
如果您想进行同步表单提交,您需要将onchange
事件附加到您的第一个select
元素:
<select name="select-one" id="select-one" onchange="this.form.submit()">
<option value="1">1</option>
<option value="2">2</option>
<option value="3">3</option>
</select>
以这种方式完成后,将提交表单,并且第一个选择选项将作为 可用request.getParameter("select-one")
,您将根据该选项为第二个下拉列表提供数据,通常转发到 JSP。
如果您想通过 AJAX检索列表并重新填充另一个下拉列表,您可以发送 AJAX 请求并在回调函数中处理返回的数据:
var val = $('#select-one option:selected').val();
$.ajax({
url: "servletURL",//servlet URL that gets first option as parameter and returns JSON of to-be-populated options
type: "POST",//request type, can be GET
cache: false,//do not cache returned data
data: {one : val},//data to be sent to the server
dataType: "json"//type of data returned
}).done(function(data) {
var second = $("#select-two");
$.each(data, function() {
options.append($("<option />").val(this.value).text(this.label));
});
});
以这种方式完成后,将重新填充第二个下拉列表而不刷新页面。
onchage
在您的选择下拉事件中编写一个 JavaScript 函数名称 callAJAX
在您的 callAJAX 函数中,对后端进行 ajax 调用,从服务器获取响应,并使用来自 ajax 调用的响应填充新下拉列表
我希望你可以拨打 ajax 电话,如果不让我知道的话。
您想从后端动态加载列表。您必须与您的服务器通信:
如果AJAX
不是您的要求,我建议您首先通过表单提交(页面加载)来完成,因为它对初学者来说更简单更容易。
同意贾。您必须将该表单提交给 java 方法,然后您的 java 方法将返回 arrayList。当然,如果您提交表单,您的页面将被刷新,我不确定您之前选择的值是否仍会在表单上被选中。我对这种方法不太了解。我更喜欢使用jquery。
使用 jquery 你可以这样做:
$.ajax({
url: "/MyApp/MyClass/getArrayList",
type: "GET",
data: "selectedEntity=" + s_entity,
success: function(response){
//handle returned arrayList
},
error: function(e){
//handle error
}
});
把它放在一个函数中。将您选择的实体作为参数传递并在成功部分处理响应。当然,您的 java 方法应该将“selectedEntity”映射到方法标头中的参数。在 Spring 中,它是这样完成的:
private @ResponseBody ArrayList getArrayList(@RequestParam("selectedEntity") String entity)