struts2+jquery实现动态添加下拉框

时间:2023-01-23 09:13:35
 

一个下拉框的内容需要从数据库读取..想不出其他什么办法了.只能用ajax来实现了...在页面载入的时候发送ajax信息,然后动态添加到下拉框里..

这里偷了个小懒.我将返回的数据直接用下划线隔开了(一般来说,应该是返回一个xml格式的内容),.

其他的部分和上面那节struts2+json+jquery实现ajax没什么不同,就把action里面执行的方法和页面的关键部分放上来

package com.test.action;

import java.util.List;

import com.googlecode.jsonplugin.annotations.JSON;
import com.opensymphony.xwork2.ActionSupport;
import com.test.model.DataDict;
import com.test.service.DataDictService;

@SuppressWarnings("serial")
public class DataDictAction extends ActionSupport
{
 private List<DataDict> list;
 private DataDictService dataDictService;
 private String category;
 private String id;
 private String value;
 
 public String getId()
 {
  return id;
 }
 public void setId(String id)
 {
  this.id = id;
 }
 public String getValue()
 {
  return value;
 }
 public void setValue(String value)
 {
  this.value = value;
 }
 public String getCategory()
 {
  return category;
 }
 public void setCategory(String category)
 {
  this.category = category;
 }
 public List<DataDict> getList()
 {
  return list;
 }
 public void setList(List<DataDict> list)
 {
  this.list = list;
 }
 @JSON(serialize = false)
 public DataDictService getDataDictService()
 {
  return dataDictService;
 }
 @JSON(serialize = false)
 public void setDataDictService(DataDictService dataDictService)
 {
  this.dataDictService = dataDictService;
 }
 /**
  * 查询的是分销商类型
  * @return
  */
 public String clientLevel()
 {
  list = dataDictService.findDict(category);
  if(list.size() == 0)
  {
   value = "";
   id = "";
  } else if(list.size() == 1)
  {
   id = list.get(0).getId();
   value = list.get(0).getName();
  } else
  {
   value = list.get(0).getName();
   id = list.get(0).getId();
   for(int i = 1; i < list.size(); i++)
   {
    id = id + "_" + list.get(i).getId();
    value = value + "_" + list.get(i).getName(); //主要看这两句, 我把返回的数据,使用"_"隔开了
   }
  }
  return SUCCESS;
 }
}

 在看页面的

//jquery添加下拉列表]
    function init()
         {  
          var category = "client_level";//这个直接对应于数据库的字段
          var url = 'DataDict_clientLevel.action?category='+category;
          var params = null;
          $.ajax({
              type:'POST',            //http请求方式
              url: url,    //服务器段url地址
              data: params,           //发送给服务器段的数据
              dataType:'json',  //告诉JQuery返回的数据格式
              success: callback  //定义交互完成,并且服务器正确返回数据时调用的回调函数
           });
         }
      function callback(data)
         {
          var pageid = data.id;
          var pagevalue = data.value;
          var id = new Array();
          var value = new Array();
          id = pageid.split("_");
          value = pagevalue.split("_");//使用split方法,从新分开.下面是js添加下拉框的代码...

          var obj = document.getElementById("clientLevel");
          for (i=0;i<id.length ;i++ )   
          {
         obj.add(new Option(value[i],id[i])); 
          }
         }