一个粗心的Bug,JSON格式不规范导致AJAX错误
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了一个粗心的Bug,JSON格式不规范导致AJAX错误相关的知识,希望对你有一定的参考价值。
一、事件回放
今天工作时碰到了一个奇怪的问题,这个问题很早很早以前也碰到过,不过没想到过这么久了竟然又栽在这里。
当时正在联调一个项目,由于后端没有提供数据接口,于是我直接本地建立了一个 json 文件,然后把配置的URL指向这个json文件,文件内容大概如下 :
// account.json { success: true, data: [{ id: "1", name: "张XX", job: "员工", type: 1 }] }
嗯,一个十分标准的javascript对象。
然后,我的ajax代码大概如下:
function getRemoteData(url, param, success) { $.ajax({ type: ‘get‘, url: url, data: param, dataType: ‘json‘, cache: false, success: function(result) { success(result); }, error: function() { alert(‘网络错误,请重试‘); } }); }
然后,悲剧就开始了。
这段代码,一直走入error的回调
什么原因?我开始漫漫的排查之路。
--allow-file-access-from-files
结果,确实没用。
function getRemoteData(url, param, success) { $.ajax({ type: ‘get‘, url: url, data: param, dataType: ‘text‘, // 改成了text cache: false, success: function(result) { success(eval(‘(‘ + result + ‘)‘)); // 使用eval解析了一下 }, error: function() { alert(‘网络错误,请重试‘); } }); }
在 jQuery 1.4 中,JSON 格式的数据以严格的方式解析,如果格式有错误,jQuery都会被拒绝并抛出一个解析错误的异常。(见json.org的更多信息,正确的JSON格式。)
// account.json { "success": true, "date": [{ "id": "1", "name": "张XX", "job": "员工", "type": 1 }] }
{ "success": undefined }
这么一个JSON,是错误的。
3、对于number类型,表示的方法如下
用科学计数法的时候会牵涉到。
三、一点感想
转载本站文章请注明作者和出处 哎呦大黄 – http://www.cnblogs.com/season-huang/ ,请勿用于任何商业用途
以上是关于一个粗心的Bug,JSON格式不规范导致AJAX错误的主要内容,如果未能解决你的问题,请参考以下文章
C# 调用Java的WebService(返回json格式数据),老是返回null, 求解!
THINKPHP__THINKPHP6接收ajax下拉菜单提交的数据,存在的bug
Json与Ajax交互报错解决No converter found for return value of type: class com.github.pagehelper.PageInfo(代码片
Json与Ajax交互报错解决No converter found for return value of type: class com.github.pagehelper.PageInfo(代码片