如何完整地实现一个从前端到后端、再到前端的ajax请求
最近开发需要实现一个选中下拉框后自动根据该选中的内容填充其他文本框的小功能,由于自己很少用到ajax,花了不少功夫,所以在此做好笔记,方便日后查看,也希望给有需要的小伙伴提供帮助。
html 下拉框
<label class="layui-form-label">乙方单位</label>
<select name="partyBUnit" id="partyBUnit" >
<option value="1" >单位1</option>
<option value="2" >单位2</option>``
<option value="3" >单位3</option>
</select>
<label class="layui-form-label">乙方单位联系人</label>
<input type="text" id="partyBContacts" readonly />
<label class="layui-form-label">乙方单位联系电话</label>
<input type="text" id="partyBPhone" readonly />
ajax方法
$('#partyBUnit').on('change', function () {
$.ajax({
//同步或者异步
async: false,
//请求地址
url: 请求地址,
//请求方式
type: "get",
//请求成功后执行方法
success: function (data) {
//解析json格式数据
var JsonObjs = eval("(" + data + ")");
if(JsonObjs == null){
$("#partyBContacts").val("");
$("#partyBPhone").val("");
}else{
$("#partyBContacts").val(JsonObjs['unitContacts']);
$("#partyBPhone").val(JsonObjs['unitPhone']);
}
}
})
});
controller接收请求并返回
@GetMapping("/unit")
@SysLog("获取单位信息")
public void unit(@RequestParam(value = "unitId", defaultValue = "0") String unitId, HttpServletResponse response) throws IOException {
//根据前端传的id查询数据
EntityWrapper<EnginUnit> enginUnit = new EntityWrapper<>();
enginUnit.eq("del_flag","0");
enginUnit.eq("id",unitId);
List<EnginUnit> enginUnitList = enginUnitService.selectList(enginUnit);
EnginUnit unit = new EnginUnit();
//将数据转成json对象
JSON data = null;
if(enginUnitList.size()>0){
unit = enginUnitList.get(0);
data = (JSON) JSON.toJSON(unit);
}
//返回json对象供ajax方法处理
response.getWriter().print(data);
}