JSON ajax SyntaxError: JSON.parse: unexpected character   异常

出现这个错误,说明json格式不对或者json里面的数据有字符的问题。

我出现这个问题是因为在后台取的一条数据数据,使用json进行数据封装时,实体中关联的实体进行了数据的懒加载,导致json中data的格式被破坏,缺少"[]",所以前台识别不了。虽然请求成功,并且返回了数据。但是success中没有执行。

后来看到网上说使用 $.parseJSON(data) 有一个请求是成功了。本以为另一个也会成功,结果抛出  JSON ajax SyntaxError: JSON.parse: unexpected character   异常。这就很郁闷了。

记得注释掉ajax中的​dataType: "json",

按理说。两个ajax写的几乎都一样,应该是没问题的。然后就比较了下后台方法中的封装。

找出了原因。

//jsonString = JSONUtil.getDeepJSONString(jsonData);   使用此行的话,就已经封装成了一个json数据格式吧,本人猜测。
jsonString = JSONUtil.getJSONString(jsonData);    ​此行很有可能是返回一个json格式的字符串。然后前台使用parse转一下,转成json格式的。

return jsonString;

随后,前台成功。

{"code":null,"data":{"author":"aaaaaa","class":"com.citycloud.apps.cms.entity.CmsContent","column":{"class":"com.citycloud.apps.cms.entity.CmsColumn_$$_javassist_43","colAlias":"zwxxxw","colDesc":"1","colId":123,"colName":"政闻","colProp":"1","colStatus":"1","indexTemplate":"1","url":null,"validDate":"2014-01-21 00:00:00"},"message":"查询成功","success":true,"totalCount":1}

中间的数据太长了,就干掉了一部分,这是前台没有转换前的,

Object { data={...},  message="查询成功",  success=true,  更多...}这是熟悉的控制台输出哦。说明成功了。


下面展示一下前台ajax,借以参考:

function tellUs(){
    $.ajax({
        url: baseP + '/aaaa/andAs',
//        data:{},
//        dataType:"json",
        async:false,
        success:function(data){
            var da = $.parseJSON(data);
            $("#tell").append(da.data.content);
        }
    });
}

后台的话,就上面的最后使用jsonString = JSONUtil.getJSONString(jsonData);
封装数据就好了。

GitHub 加速计划 / js / json
41.72 K
6.61 K
下载
适用于现代 C++ 的 JSON。
最近提交(Master分支:10 天前 )
960b763e 2 个月前
8c391e04 5 个月前
Logo

旨在为数千万中国开发者提供一个无缝且高效的云端环境,以支持学习、使用和贡献开源项目。

更多推荐