Ajax无法接受后台返回值
在用Java的SSM框架编写项目时,前端HTML页面采用Ajax向后台服务器发送请求获取目标数据,前端代码如下图所示。
$.ajax({
type: "GET",
url: "/hosregister/list.do",
data: $("#myForm").serialize(),//主要是分页和多条件参数数据
dataType:"json",
success: function(vo){
let list =vo.pageInfo.list;
let str="";
for(let i=0;i<list.length;i++) {
let obj = list[i];
let hosR_id = obj.hosR_id == null ? '' : obj.hosR_id;
let d_name = '';
let hosR_date = obj.hosR_date == null ? '' : obj.hosR_date;
let d_keshi = '';
let hosR_state = obj.hosR_state == 0 ? '已挂号' : (obj.hosR_state == 1 ? '已住院' : (obj.hosR_state == 2 ? '已出院' : '已退号'));
let btnStr = "";
if (obj.hosR_state == 0) {
btnStr = '<a href="look.html"><详情></详情>>>></a> <a href="edit.html">更改</a> <a href="javascript:alert("退号成功");">退号</a>';
} else if (obj.hosR_state == 1) {
btnStr = '<a href="look.html">详情>>></a> <a href="edit.html">更改</a>';
} else {
btnStr = '<a href="look.html">详情>>></a>';
}
str += '<tr>' +
' <td style="vertical-align:middle;"><input type="checkbox" name="check" value="1"></td>' +
' <td style="vertical-align:middle;">' + hosR_id + '</td>' +
' <td style="vertical-align:middle;">' + d_name + '</td>' +
' <td style="vertical-align:middle;">' + hosR_date + '</td>' +
' <td style="vertical-align:middle;">' + d_keshi + '</td>' +
' <td style="vertical-align:middle;">' + hosR_state + '</td>' +
' <td style="vertical-align:middle;">' + btnStr + '</td>' +
'</tr>';
alert(str);
}
alert(str);
$("#tboby").html(str);
//填充分页数据
//fillPageData(vo.pageInfo);
}
})};
每次运行总是报错,说前端无法接受后台发送的数据,如下图所示。
我反复调试后台发现后台能发送到前台目标数据,但不知道什么原因前端Ajax无法接受后台发送的数据,前端该配置的环境都没问题!后面我查找了很多资料,发现问题很简单,我竟然花了大半天时间查找,真是相见恨晚,特意写个博客记录一下,希望各位道友能够借鉴,少走弯路!
问题出在button按钮,button按钮放在form标签内就不能接收到数据,放到form标签外就没事,就这么隐蔽的一个错误啊,害得我找了好久!后来又上网查了一下,才知道button按钮放在form内要是不写type属性则默认为submit类型,但我想要的不是让它提交整个表单啊,因此只需设置属性type='button’即可。
<form>
<table>
<td width="10%" class="tableleft">挂号时间:</td>
<td colspan="5">
<input type="text" name="hosR_dateStart" value=""/> 至 <input type="text" name="hosR_dateEnd" value=""/>
<button class="btn btn-primary" type="button" id="search">查询</button>
<!--注意type = "button", button按钮放在form内要是不写type属性则默认为submit类型,无法接受后台的数据-->
<button class="btn btn-primary" type="button">清空</button>
</td>
</tr>
</table>
</form>