zl程序教程

您现在的位置是:首页 >  前端

当前栏目

jquery怎样实现ajax联动框(一)

jQueryAJAX 实现 怎样 联动
2023-06-13 09:14:47 时间
前台页面
复制代码代码如下:

<scripttype="text/javascript"src="${rc.contextPath}/js/jquery.select.js"></script>
<scripttype="text/javascript">
$(document).ready(function(){
$("#rwflSelect").linkSelect({
nodata:"none",
required:true,
firstUrl:"${rc.contextPath}/repair/loadCategory",
secondUrl:"${rc.contextPath}/repair/loadSubCategory",
firstValue:"$!{repair.categoryid}",//任务大类
secondValue:"$!{repair.subcategoryid}"//人物小类
});
});
</script>
<trid="rwflSelect">
<tdwidth="100"class="t_rprtenfield_c">任务分类:</td>
<tdwidth="131"><selectclass="first"name="categoryid"></select></td>
<tdwidth="10"></td>
<tdwidth="131"><selectclass="second"name="subcategoryid"disabled="disabled"></select></td>
</tr>


jquery.select.js
复制代码代码如下:

/*
Ajax三级联动
日期:2013-2-26
settings参数说明
-----
firstUrl:一级下拉数据获取URL,josn返回
firstValue:默认一级下拉value
secondUrl:二级下拉数据获取URL,josn返回
secondValue:默认二级下拉value
thirdUrl:三级下拉数据获取URL,josn返回
thirdValue:默认三级下拉value
nodata:无数据状态
required:必选项
------------------------------*/
(function($){
$.fn.linkSelect=function(settings){
if($(this).size()<1){return;};
//默认值
settings=$.extend({
firstUrl:"js/city.min.js",
firstValue:null,
secondValue:null,
thirdValue:null,
nodata:null,
required:true
},settings);
varbox_obj=this;
varfirst_obj=box_obj.find(".first");
varsecond_obj=box_obj.find(".second");
varthird_obj=box_obj.find(".third");
varselect_prehtml=(settings.required)?"":"<optionvalue="">请选择</option>";
varprepareSelectHtml=function(jsonArray){
vartemp_html=select_prehtml;
$.each(jsonArray,function(index,row){
temp_html+="<optionvalue=""+row.value+"">"+row.text+"</option>";
});
returntemp_html;
};
//赋值二级下拉框函数
varsecondStart=function(){
second_obj.empty().attr("disabled",true);
third_obj.empty().attr("disabled",true);
if(first_obj.val()==""){
return;
}
$.getJSON(settings.secondUrl,{firstValue:first_obj.val(),time:newDate().getTime()},function(jsonResult){
if(!jsonResult.success){
if(settings.nodata=="none"){
second_obj.css("display","none");
third_obj.css("display","none");
}elseif(settings.nodata=="hidden"){
second_obj.css("visibility","hidden");
third_obj.css("visibility","hidden");
};
return;
}
//遍历赋值二级下拉列表
second_obj.html(prepareSelectHtml(jsonResult.data)).attr("disabled",false).css({"display":"","visibility":""});
thirdStart();
});

};
//赋值三级下拉框函数
varthirdStart=function(){
third_obj.empty().attr("disabled",true);
$.getJSON(settings.thirdUrl,{firstValue:first_obj.val(),secondValue:second_obj.val(),time:newDate().getTime()},function(jsonResult){
if(!jsonResult.success){
if(settings.nodata=="none"){
third_obj.css("display","none");
}elseif(settings.nodata=="hidden"){
third_obj.css("visibility","hidden");
};
return;
}
//遍历赋值三级下拉列表
third_obj.html(prepareSelectHtml(jsonResult.data)).attr("disabled",false).css({"display":"","visibility":""});
thirdStart();
});
};
varinit=function(){
//遍历赋值一级下拉列表
$.getJSON(settings.firstUrl,{time:newDate().getTime()},function(jsonResult){
if(!jsonResult.success){
return;
}
//遍历赋值一级下拉列表
first_obj.html(prepareSelectHtml(jsonResult.data));
secondStart();
//若有传入一级与二级的值,则选中。(setTimeout为兼容IE6而设置)
setTimeout(function(){
if(settings.firstValue&&settings.firstValue.length>0){
first_obj.val(settings.firstValue);
secondStart();
setTimeout(function(){
if(settings.secondValue&&settings.secondValue.length>0){
second_obj.val(settings.secondValue);
thirdStart();
setTimeout(function(){
if(settings.thirdValue&&settings.thirdValue.length>0){
third_obj.val(settings.thirdValue);
};
},1);
};
},1);
};
},1);
});
//选择一级时发生事件
first_obj.bind("change",function(){
secondStart();
});
//选择二级时发生事件
second_obj.bind("change",function(){
thirdStart();
});
};
//初始化第一个下拉框
init();
};
})(jQuery);

${rc.contextPath}/repair/loadCategory对应的后台方法及返回json值:
复制代码代码如下:
@RequestMapping("loadCategory")
@ResponseBody
publicMap<String,Object>loadCategory(ModelMapmodel){
Stringmsg="";
booleanisSuccess=false;
List<Map<String,String>>maps=newArrayList<Map<String,String>>();
try{
List<Category>categories=categoryService.findAllCategory();
for(Categorycategory:categories){
Map<String,String>map=newHashMap<String,String>();
map.put("value",category.getId().toString());
map.put("text",category.getCategoryName());
maps.add(map);
}
msg="查找大类成功。";
isSuccess=true;
}catch(Exceptione){
msg="查找大类失败。";
log.error("查找大类失败:"+e.getMessage(),e);
}
returnbuildAjaxResult(isSuccess,msg,maps);
}
protectedMap<String,Object>buildAjaxResult(booleanisSuccess,Stringmsg,Objectdata){
Map<String,Object>resultMap=newHashMap<String,Object>();
resultMap.put("success",isSuccess);
resultMap.put("msg",msg);
resultMap.put("data",data);
returnresultMap;
}

效果如图: