我一直在尝试使用AJAX从数据库动态填充列表,然后使用servlet将新选择的列表值保存回数据库。最好的方法是什么?
这是我通常用来进行动态更新和填充的代码(使用Gson)。但是这不会起作用,因为List有几个要从DB加载的值。
AJAX
<script>
jQuery(function () {
$('.clickable-row').click(function () {
var $this = $(this),
id = this.id;
$.get("DynPopRemPersnSrvlt?idReminderLevel="+id, function (responseJson) {
var array=[];
$.each(responseJson, function(index, item)
{
array[index]=item;
});
$('#firstNameTxt').val(array[1]);
$('#lastNameTxt').val(array[2]);
$('#designationTxt').val(array[3]);
$('#emailTxt').val(array[4]);
$('#levelLst').val(array[5]);
$('#idReminderLevel').val(array[0]);
});
});
});
</script>
DynPopRemPersnSrvlt。这个servlet提供了AJAX的数据。
int idReminderLevel=Integer.parseInt(request.getParameter("idReminderLevel"));
ReminderPersonService remPService=new ReminderPersonService();
List<String> remPersLst=new ArrayList<String>();
Reminderperson reminderPerson =remPService.findById(idReminderLevel);
remPersLst.add(reminderPerson.getIdReminderLevel().toString());
remPersLst.add(reminderPerson.getFirstName());
remPersLst.add(reminderPerson.getLastName());
remPersLst.add(reminderPerson.getDesignation());
remPersLst.add(reminderPerson.getEmail());
remPersLst.add(reminderPerson.getReminderleveltype().getTypeName());
String json=new Gson().toJson(remPersLst);
response.setContentType("application/json");
response.setCharacterEncoding("UTF-8");
response.getWriter().write(json);
我想要的是从servlet发送这样的List。然后从AJAX中检索它,然后将所有值加载到HTML列表。
ArrayList<Reminderleveltype> rem=remPService.findAll();
像这样的HTML列表。
<select id="levelLst" class="form-control input-md" name="levelLst">
<option value="id1">First Level</option>
<option value="id2">Second Level</option>
<option value="id3">Third Level</option>
</select>
是否可以动态加载DBG表&#34; id&#34;到HTML列表&#34;值&#34;以及DB表&#34;名称&#34;到HTML列表的&#34; text&#34;(&#34; First Level&#34; etc ..),然后通过&#34; id&#34;获取所选值。然后将其更新回DB?
答案 0 :(得分:0)
是的,您可以动态填充它。我有一个建议,如果您的要求只是使用密钥和值来填充下拉列表,为什么要使用list
? (不必要地获取和设置列表中的所有值)转到地图。只需在地图中输入id和value即可。
从ajax接收gson数据后,重新构建您的select标签选项及其值,
$(document).ready(function() {
$.get("DynPopRemPersnSrvlt?idReminderLevel="+id, function (responseJson) {
var $select = $('#levelLst');
// Clear the existing values
$select.find('option').remove();
$.each(responseJson, function(key, value) {
$('<option>').val(key).text(value).appendTo($select);
});
});
});
});
因此它将使用新值重新填充选择框。