功能描述:
在grails通过选择select不同的option,通过Ajax查询数据库中的值,返回Json类型的结果,实现页面标签的无刷新级联。
1.页面代码,在id为selectQuyu不同的选择返回不同的值到id为selectChangjia的select中。
2.js进行处理,导入prototype类库,发送Ajax异步请求,获得返回的json类型的值,然后加入到id为selectChangjia的select中。
3.controllor中的处理,通过传入的id好进入数据库进行查询,然后返回json结果。
在grails通过选择select不同的option,通过Ajax查询数据库中的值,返回Json类型的结果,实现页面标签的无刷新级联。
1.页面代码,在id为selectQuyu不同的选择返回不同的值到id为selectChangjia的select中。
<select id="selectQuyu" onchange ="setChanjia(this.options[this.selectedIndex].value)">
<option value="-1" selected="true">全部集团</option>
<option value="1">红塔集团</option>
<option value="2">红烟集团</option>
<option value="3">红云集团</option>
<option value="5">其它</option>
</select>
<select id ="selectChangjia">
<option selected="true">全部厂家</option>
</select>
2.js进行处理,导入prototype类库,发送Ajax异步请求,获得返回的json类型的值,然后加入到id为selectChangjia的select中。
<g:javascript library="prototype" />
<script language="JavaScript" type="text/javascript">
function setChanjia(jituan){
var baseUrl = "${createLink(controller:'csfx', action:'getJson')}"
var url = baseUrl + "?combineid=" +(jituan)
alert(url)
new Ajax.Request(url, {
method: 'get',
asynchronous: true,
onSuccess:function(req) {update(req.responseText, 'changjiaMess')}
})
}
function update(json, mess){
var cjxx = eval( "(" + json + ")" )
//删除所有的值
document.getElementById("selectChangjia").options.length=0;
document.getElementById("selectChangjia").options.add(new Option('全部厂家','-1'));
for(var i = 0;i<cjxx.length;i++){
var changJiaText = cjxx[i].CHANGJIA;
var changJiaValue = cjxx[i].CHANGJIAID;
document.getElementById("selectChangjia").options.add(new Option(changJiaText,changJiaValue));
}
}
</script>
3.controllor中的处理,通过传入的id好进入数据库进行查询,然后返回json结果。
def getJson ={
//处理已经遗留的数据库
Sql sql = new Sql(dataSource)
def com_id = params.combineid
def changjiaStr = " select distinct(t.produce_factory) as changjia,t.factory_id as changjiaid from dim_tel_sale_cigarette t "
if(com_id!=null&&com_id!="-1"){
changjiaStr =changjiaStr+"where t.combine_id = "+com_id
}
println changjiaStr
def changJiaArr = sql.rows(changjiaStr)
//处理乱码问题
changJiaArr.each{
it.CHANGJIA = new String((it.changjia).getBytes("ISO-8859-1"),"gb2312")
}
render changJiaArr as JSON
}