Unrecognized token 'ename': was expecting ('true', 'false' or 'null')(ajax中data动态获取数据)

本文介绍了一种常见的Ajax调用失败的问题,即由于JSON格式不规范导致的回调函数执行错误。通过对比正确的JSON格式,给出了具体的修改方案,并提供了两种不同场景下的数据传递格式。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

转载自:http://blog.youkuaiyun.com/javaee_sunny/article/details/52576710
1.报错现象:

页面报错截图: 
页面报错截图 
后台报错截图: 
后台报错截图

2.源代码:

jsp代码:

    $.ajax({ 
              type:"POST", 
              url:"${pageContext.request.contextPath }/empController/test", 
              contentType:"application/json;charset=utf-8",  //发送信息至服务器时内容编码类型。             

              data:{'ename':$('#ename').val()},
              dataType:'json',  
              success:function(data){ 
                        alert("保存....");
                      },
              error:function(data) { 
                        alert("失败...");
                    } 
          }); 

Controller代码:

    @ResponseBody
    @RequestMapping("/test")
    public Emp testjsp(@RequestBody Emp emp){
        System.out.println(emp.getEname()+"***************");
        return emp;
    }
3.问题分析:

返回数据格式不规范.当dataType指定为json后,1.4+以上的jquery版本对json格式要求更加严格.如果不是严格的json格式,就不能正常执行success回调函数.

JSON格式总结下,详细的去json.org 查看。    
1)键名称:用双引号 括起    
2)字符串:用使用双引号 括起 
3)数字,布尔类型不需要 使用双引号 括起

4.解决方案:

按照上方严格的json格式,将动态获取的data参数修改为如下格式,即可:

data:"{\"ename\":\""+$("#ename").val()+"\"}",

不是动态获取数据时,格式如下:(注意比较区别)

data:'{"ename":"tom"}',
5.参考文章:

[1] ajax不执行success回调而是执行error回调

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值