js常见报错之Unexpected token in JSON at position

源头

??出现这个报错提示,根本原因只有一个--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"的形式,不过这会使得传输信息量大

时间: 2024-10-12 03:14:56

js常见报错之Unexpected token in JSON at position的相关文章

php Unexpected token < in JSON at position 0

最近在尝试用php写后台,到数据库的部分,用Ajax请求json数据,结果报错: Unexpected token < in JSON at position 0 在百度上找了一下解决办法,发现自己都不是,在篇博客上发现别人在页面上找到了response,自己就去找了一下: F12->Network->name下的php->点击找到previe  就可以看到 我自己是因为Undefined index 平时用$_post[''],$_get['']获取表单中参数时会出现这样的问题

JS请求报错:Unexpected token T in JSON at position 0

<?php /* 最近做一个ajax validate表单验证提交的代码,在ajax提交的时候 JS请求报错:Unexpected token T in JSON at position 0 描述: 这是一个请求,参数的地方报这要的错,请问是为什么? 百思不得其解啊 解决方案1: 去看下json的格式要求,JSON.parse()方法对json串要求很严格 解决方案2: http://www.bejson.com/ 用这个网址测试试试json格式是不是有误,换行,单引号什么的会导致报错,格式要求

Uncaught SyntaxError: Unexpected token &#39; in JSON at position 1

听说js是一样很BT的语言,今天真是有点领教到了. 用python3.6+django2.0开发网站时,遇到了一个坑中之坑! 在异步数据提交Ajax的运用中,不免在回调函数中使用到JSON.parse(data) 浏览器控制台Console报错: VM493:1 Uncaught SyntaxError: Unexpected token ' in JSON at position 1 at JSON.parse (<anonymous>) at Object.success ((index)

[Vue warn]: Error in render: &quot;SyntaxError: Unexpected token &#39; in JSON at position 1&quot;

一,场景: 字符串转对象: var str = "{'bankRate':5,'YINGUO':0}" 二,操作: JSON.parse(str)时候,报错 [Vue warn]: Error in render: "SyntaxError: Unexpected token ' in JSON at position 1" 三,原因: 使用parse这个方法,要求很严格,必须是json的k和value都用双引号包起来: ex:"{"bankRa

npm install Unexpected token in JSON at position XXX

问题描述执行npm install命令时出错,查看日志发现: Unexpected token < in JSON at position 183718 解决方法删除根目录下package-lock.json文件 参考Install error: Unexpected token < in JSON at position 35 #17340 原文地址:https://www.cnblogs.com/jkr666666/p/9941934.html

JS常见报错与修复

如何读懂错误? 首先,让我们快速看下错误信息的结构.理解结构有助于理解错误,如果遇到列表之外的错误会减少麻烦. Chrome 中典型的错误像这样: Uncaught TypeError: undefined is not a function 错误的结构如下: Uncaught TypeError: 这部分信息通常不是很有用.Uncaught 表示错误没有被 catch 语句捕获,TypeError 是错误的名字. undefined is not a function: 这部分信息,你必须逐字

js常见报错解决方法

3.获得类名document.getElementsClassName(常出现一个问题): getClassName("gn","pt")[0].appendChild(a); getClassName("gn","pt")这里是自定义获取类名的函数(可以看我写的js自定义获取类名函数),类名是可以重复多个的,这时我们就要给它指定是第几个追加函数,如果不指定,就会报错.下面是报错情况,如果加上[0]就不会报错 原文地址:htt

android开发_git操作中常见报错及解决办法

Focus on technology, enjoy life!-- QQ:804212028 浏览链接:http://blog.csdn.net/y18334702058/article/details/44624305 主题:git操作中常见报错 - 如果输入$ git remote add origin [email protected]:xxx(github帐号名)/yyy(项目名).git 提示出错信息:fatal: remote origin already exists. 解决办法

cocos2d-js运行游戏常见报错

作为新手,参考官网案例自己再打一遍代码运行游戏时常会出现许多相同报错,有的是由于自己单词拼写错误,或者文件未加载等,在写代码的时候一定要细心细心再细心,下面是我这两天运行出现的一些报错及我的解决方法,多是自己搜索外带摸索总结的,有什么不对的敬请指正,当然,运行过程中也许会有各种问题,我这边也可能只是极少数,后续碰到的会继续更新,希望大家看到并可以解决的也可以共享下. 运行游戏常见报错: 1.loader for [null] not exists! 尝试方法:极有可能是加载什么类型的资源没有后缀