js常见报错之UnexpectedtokeninJSONatposition
json检查
源头
  出现这个报错提⽰,根本原因只有⼀个--json解析异常,所以请⼤家直接去关注⾃⼰json的返回数据注意检查其返回内容和内容的格式是否正确,⾄于本⽂⾎案的导⽕索是因为json注释滴问题。
事发--⾎案
  有⼀天⼀个朋友我商量,说⽤jquery的ajax什么都写对了,可数据就是不正常显⽰,我说发核⼼代码我look下,如图1
  我也反复检查了⼏遍确实没问题,那。。。。。。我突然发现他的代码中只存在了异步success的回调,既然不⾛成功回调,那就看下error函数咯,error函数我们不经常使⽤,其有三个参数XMLHttpRequest对象, textStatus错误⽂本描述, errorThrown错误发⽣时才会被传递。在error⾥添加⼀个log发现被打印了,ajax这个过程确实存在异常,但具体哪个⽅向的依旧未知。打印了⼀下textStatus发现输出parsererror,解析错误。好了,此刻可以断定ajax通信是正常的。也就是adyState已经为4了,那就代表客户端和服务端通信完成,数据已经拿回本地,最后可以确定报错的原因就是在json解析的时候发⽣了异常。
  于是我⼜信誓旦旦的去检查他本地模拟的json数据,我们都知道json是由⽼道在js对象语法格式上发明⽽来的,其⽐js的对象格式更加严谨,单双引号搞错都不⾏,⽽且json也就那么⼏种固定的返回格式,直接{}对象形式,还有⼀种对象数组形式[{},{}],还有⼀种对象中的数组{"", []}额,我记得是⼀共就这三种情况,晓得这些基础知识以后严格排查,发现格式⼀切正常,额。。见⿁。。。。。
  那看下返回内容吧,如图2所⽰,⼀个json数组⼀个抬头信息。乍⼀看貌似没什么问题,但是问题就在这,上⽂已经说到json格式是从js 对象格式中改变⽽来,在js中注释有很多种写法,但是json在发明之初就是不提倡注释的,所以抬头信息在解析的时候就会被认定为错误信息。深坑啊。。。。。
总结
  于是乎我就去寻这个抬头的来源,我问他你最近⽤什么编辑器了没?他说就sublime,我起初怀疑是编辑器⾃动加的落款,后来发现不是,于是我看了下他的请求⽂件,是⼀个php⽂件,打开这个php⽂件,发现这个php⽂件刚开头就对客户端写回了⼀段说明⽂本。正好就是图2那段抬头说明性⽂本,删除这段⽂本,了事。。。
1.要善于使⽤jquery的error函数
2.注重基础知识,注意事物出现的历史原因如json是为传递⽽产⽣,
所以其没有注释也是有意⽽为之。
3.json格式是死的必须严格遵守,json中若要添加注释也要使⽤"k":
"v"的形式,不过这会使得传输信息量⼤

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。