一个下拉框的内容需要从数据库读取..想不出其他什么办法了.只能用ajax来实现了...在页面载入的时候发送ajax信息,然后动态添加到下拉框里..
这里偷了个小懒.我将返回的数据直接用下划线隔开了(一般来说,应该是返回一个xml格式的内容),.
其他的部分和上面那节struts2+json+jquery实现ajax没什么不同,就把act
package com.test.act
imp
imp
imp
imp
imp
@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.act
var params = null;
$.ajax({
type:'POST', //http请求方式
url: url, //服务器段url地址
da
dataType:'json', //告诉JQuery返回的数据格式
success: callback //定义交互完成,并且服务器正确返回数据时调用的回调函数
});
}
function callback(da
{
var pageid = da
var pagevalue = da
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]));
}
}