ajax访问接口后不执行success回调函数(除非打开开发者工具)

问题是这样的

一个简单的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层,需要通过回调关闭自身,所以才一直纠结这个错误

我曾试过的方法
  1. 将请求方式由post换成get
  2. 后台回写数据时,采用response.getWriter.write(row)的方式
  3. 在注解@RequestMapping()中加上了属性produces="text/html"
  4. ajax参数体中加入了dataType:"text json"

但是都没有效果

希望大伙能帮我解决一下,照顾一下学生,这问题浪费我一天时间了快555555。

dataType:'text json'这里是 dataType:'json'这样吧

1、后台代码debug模式打断点,看看你的请求是否发送到后台
2、将dataType类型改成form表单的试试
3、将success:function (row){}回调函数中的row改成data试试