使用来自DB的AJAX填充HTML列表,并将新选择的值更新回DB

时间:2015-03-18 09:54:55

标签: html ajax jsp servlets gson

我一直在尝试使用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?

1 个答案:

答案 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);      
       });
     });
  });
});   

因此它将使用新值重新填充选择框。