js常见报错之Unexpected token in JSON at position
源头
出现这个报错提示,根本原因只有一个--json解析异常,所以请大家直接去关注自己json的返回数据注意检查其返回内容和内容的格式是否正确,至于本文血案的导火索是因为json注释滴问题。
事发--血案
有一天一个朋友找我商量,说用jquery的ajax什么都写对了,可数据就是不正常显示,我说发核心代码我look下,如图1

我也反复检查了几遍确实没问题,那。。。。。。我突然发现他的代码中只存在了异步success的回调,既然不走成功回调,那就看下error函数咯,error函数我们不经常使用,其有三个参数XMLHttpRequest对象, textStatus错误文本描述, errorThrown错误发生时才会被传递。在error里添加一个log发现被打印了,ajax这个过程确实存在异常,但具体哪个方向的依旧未知。打印了一下textStatus发现输出parsererror,解析错误。好了,此刻可以断定ajax通信是正常的。也就是XMLHttpRequest.readyState已经为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"的形式,不过这会使得传输信息量大
js常见报错之Unexpected token in JSON at position的更多相关文章
- (网页)js常见报错之Unexpected token in JSON at position
出现这个报错提示,根本原因只有一个--json解析异常,所以请大家直接去关注自己json的返回数据注意检查其返回内容和内容的格式是否正确,至于本文血案的导火索是因为json注释滴问题.
- 使用Angular cli创建组件报错: Unexpected token / in JSON at position....
之前为了熟悉流程一直都是手动创建组件,今天试着用cli创建组件,居然报错了,报错大致为: Unexpected token / in JSON at position.... ,并且错误指向了.ang ...
- JS请求报错:Unexpected token T in JSON at position 0
<?php /* 最近做一个ajax validate表单验证提交的代码,在ajax提交的时候 JS请求报错:Unexpected token T in JSON at position 0 描 ...
- node模拟后台返回json书写格式报错--Unexpected token ' in JSON at position 1
最近在学习Node的知识,就尝试写了一个注册登陆的简单功能,但是自己在模拟后台返回值的时候,总是报错Unexpected token ' in JSON at position 1,查找原因之后,是因 ...
- JSON.parse解决Unexpected token ' in JSON at position 1报错
壹 ❀ 引 我们知道JSON.parse能将JSON字符串转变成JS对象,但在一些转换中可能出现Unexpected token ' in JSON at position 1的错误,这是因为被转换 ...
- Uncaught SyntaxError: Unexpected token ' in JSON at position 1
听说js是一样很BT的语言,今天真是有点领教到了. 用python3.6+django2.0开发网站时,遇到了一个坑中之坑! 在异步数据提交Ajax的运用中,不免在回调函数中使用到JSON.parse ...
- JSON.parse()——Uncaught SyntaxError: Unexpected token \ in JSON at position 1
背景:项目安全处理方面之一 ——对特殊字符进行编解码(后端编码,前端解码) 特殊字符: " %22 \ %5C / %2F & %26 % %25 ' ...
- [Vue warn]: Error in render: "SyntaxError: Unexpected token ' in JSON at position 1"
一,场景: 字符串转对象: var str = "{'bankRate':5,'YINGUO':0}" 二,操作: JSON.parse(str)时候,报错 [Vue warn]: ...
- Atitit Uncaught (in promise) SyntaxError Unexpected token < in JSON at position 0
Atitit Uncaught (in promise) SyntaxError Unexpected token < in JSON at position 0 Uncaught (in ...
随机推荐
- 项目中CKEditor修改宽度为自适应
项目中用到CKEditor,在config.js中直接定义config.width使得宽度无法自适应,尝试了好多次后发现了一种方法: 放弃在config.js中配置宽度 在页面检查元素,找到id为ck ...
- WPF实现图片倒影
比较简单,主要用到ScaleTransfrom类和VisualBrush类 <Window x:Class="实现图片倒影的方式.MainWindow" xmlns=&quo ...
- MlLib--逻辑回归笔记
批量梯度下降的逻辑回归可以参考这篇文章:http://blog.csdn.net/pakko/article/details/37878837 看了一些Scala语法后,打算看看MlLib的机器学习算 ...
- System类和Random类
System类 成员方法: public static void gc():运行垃圾回收器 public static void exit(int status):退出垃圾回收器 public sta ...
- Linux文件类型及如何查看,修改文件读写权限
现在使用 ls -l 命令,查看详细信息格式的文件列表,您将会看到如下内容: total 5drwxr-x--- 4 user group 4096 Mar 10 00:37 filenamed ...
- 利用Python【Orange】结合DNA序列进行人种预测
http://blog.csdn.net/jj12345jj198999/article/details/8951120 coursera上 web intelligence and big data ...
- [Unity3D] Normal map、Diffuse map 和 Speculer map
Normal map : Normal map (法线贴图) 它的作用是模拟出高模上的一些细节纹理,特别是将高模上的圆滑和粗糙度投射到低模上,让低模也有高模的效果. 因为高模的面数非常多,导入引擎后电 ...
- SourceTree推送时,增加额外的远程仓库,不用每次都自定义粘贴复制网络
一.命令行添加 二.软件界面可以查看到结果 更新,以上是代码添加了远程仓库,最近,找到了不用代码,直接在文件夹里写地址来添加的方式.直接上图了.
- apache启动出错原因举例
这是我这两天频繁遇到的问题.Apache服务器还真是问题少年!任何点改动都可能导致它无法使用. 原因一:80端口占用例如IIS,另外就是迅雷.我的apache服务器就是被迅雷害得无法启用! 原因二:软 ...
- curl命令使用
curl命令可以用来构造http请求.参数有很多,常用的参数如下: 通用语法:curl [option] [URL...]在处理URL时其支持类型于SHELL的名称扩展功能,如http://www.j ...