一个简单的web,前端异步发起请求到后端添加员工
前端用jquery的ajax发起添加员工的请求,后端用spring mvc框架处理请求并返回是否添加成功(1或0);
后端代码正常无报错,能够添加到数据库里。
但是将数据(1或0,表示添加是否成功)回写到前端,ajax不会执行回调函数,响应体也是空的;
后面我发现有个很奇怪的现象:只要我打开开发者工具(f12),他就能执行回调,响应体会有内容;关闭开发者工具还是不执行
前端请求发起的代码部分
// 提交
function addEmp(){
var ename = $("#ename").val();
var job = $("#job").val();
var hiredate = $("#hiredate").val();
var sal = $("#sal").val();
var comm = $("#comm").val();
var deptno = $("#dept").val();
$.ajax({
url:'${pageContext.request.contextPath}/addEmp',
data:{'ename':ename,'job':job,'hiredate':hiredate,'sal':sal,'comm':comm,'dept.deptno':deptno},
type:'post',
dataType:'text json',
success:function (row){
console.log("coming")
if(row<=0){
layer.msg('添加失败', {icon: 5});//再执行关闭
}
var index = parent.layer.getFrameIndex(window.name); //先得到当前iframe层的索引
parent.layer.close(index);
},
error:function (data){
console.log("error")
}
})
}
是后端接口的代码
@RequestMapping(value = "addEmp")
@ResponseBody
public int addEmp(Emp emp) {
System.out.println("要添加的是"+emp);
int row = empService.addEmp(emp);
return row;
}
数据库中,员工确实添加成功了; 后台输出row,也是1;
前端ajax就是不执行success回调函数,响应体也没有东西
很郁闷的是! 当我同时开着f12开发者工具时,他就能执行回调函数,响应体也会有数据。
我这里用的是layui的layer组件的iframe层,需要通过回调关闭自身,所以才一直纠结这个错误
但是都没有效果
希望大伙能帮我解决一下,照顾一下学生,这问题浪费我一天时间了快555555。
dataType:'text json'这里是 dataType:'json'这样吧
1、后台代码debug模式打断点,看看你的请求是否发送到后台
2、将dataType类型改成form表单的试试
3、将success:function (row){}回调函数中的row改成data试试