JS 调试中常见的报错的解决办法

报错:Uncaught SyntaxError: Unexpected token o in JSON at position 1

at JSON.parse (<anonymous>)
at Function.m.parseJSON (jquery.js:8515)
at Object.success (crud.html:45)
at j (jquery.js:3143)
at Object.fireWith [as resolveWith] (jquery.js:3255)
at x (jquery.js:9309)
at XMLHttpRequest.b (jquery.js:9713)

(翻译:不能捕获的语法错误:json数据位置0处发现不能识别的标记<

原因:json格式错误

  1. 返回数据 语句用echo json_encode($data,true);但是用了echo json_decode($data);
  2. 由于函数使用不对,返回的data不是json数据,第一个字符是“ <”,所以报错Unexpected token < in JSON at position 0(翻译:json数据位置0处发现不能识别的标记<);
  3. 如果使用 $.ajax({})而不是 $.get() 区别:  当使用  $.ajax 时,php返回的 JSON字符串已经被 ajax 中的属性 dataType 将请求的参数类型要求为String类型(dataType:‘json‘)返回为 JSON对象,不需要再次转换;当使用 $.get 时,服务器返回的数据格式为原始的字符串数组,因此,需要将返回的字符串转换为数组,使用 JSON.parse(jsonString) ,将JSON字符串解析为JSON对象;

json教程见:http://www.w3school.com.cn/json/index.asp

解决办法:

修改为echo json_encode($data,true);

将php的代码调试代码 echo()去掉,就不会再报这样的错误了:

$json = json_encode(array(
            "resultCode"=>200,
            "message"=>"查询成功!",
            "data"=>$data
        ),JSON_UNESCAPED_UNICODE);

        //注释掉
        /*echo($json);*/

如果使用 $.ajax 时,不需要注释

 //不需要注释
echo($json);

如果不是该问题,请检查php文件给返回的data数据,是否标准json格式。如果php文件中有var_dump、echo、注释等,都会对返回的json数据有影响。

时间: 2025-01-02 15:27:15

JS 调试中常见的报错的解决办法的相关文章

20170514002Oracle 11g R2安装过程中遇到的报错及解决办法

Oracle 11g R2安装过程中遇到的报错及解决办法 1.提示Check if the DISPLAYvariable is set.    Failed<<<< 解决方案: #xhost +  //切换到root用户输入 #su – Oracle  //切换到oracle用户 $./runInstaller  //执行安装程序 xhost 是用来控制X server访问权限的. 通常当你从hostA登陆到hostB上运行hostB上的应用程序时, 做为应用程序来说,hostA

vue1.0中$index一直报错的解决办法

原文链接:https://www.cnblogs.com/liqiong-web/p/8144925.html 看学习视频,因为年份比较早了,其实vue早已迭代到vue2.0了,遇到一些问题: v-for遍历数组,获取索引 注意:在2.0版是1~10中,$index已废除,索引 (item,index). 如下为vue1.0的写法,$index浏览器会报错 1 <ul v-if="seller.supports" class="supports"> 2

向工程中导入libqrencode报错的解决办法

项目需要用到二维码生成.网上找了大多推荐使用libqrencode.下下来导入工程按习惯先编译了下,22个错误 ,预想中的,先百度搜了下解决办法.试完了所有答案居然都没解决, 硬着头皮去stackoverflow找答案.还是国外大神牛逼.一句话就解决了:.pch配置文件中把全局引用的.h文件全放在 #ifdef __OBJC__ #endif 之中.到处问题完美解决.

eclipse中的js文件报错的解决办法

在使用别人的项目的时候,导入到eclipse中发现js文件报错,解决办法是关闭eclipse的js校验功能. 三个步骤: 1. Eclipse代码   右键点击项目->properties->Validation->Errors/Warming 将Enable Javascript Sematic validation前面的钩子去掉 2.打开.project 文件下面代码去掉 Eclipse代码   <buildCommand> <name>org.eclipse

tomcat中安装JDK报错详细解决过程

在安装tomcat时解压安装JDK时出现如下报错:[[email protected] src]# wget 'http://download.oracle.com/otn-pub/java/jdk/8u65-b17/jdk-8u65-linux-i586.tar.gz'--2016-01-18 04:21:56--  http://download.oracle.com/otn-pub/java/jdk/8u65-b17/jdk-8u65-linux-i586.tar.gz正在解析主机 dow

单元测试时候使用[ClassInitialize]会该方法必须是静态的公共方法,不返回值并且应采用一个TestContext类型的参数报错的解决办法

using Microsoft.VisualStudio.TestTools.UnitTesting; 如果该DLL应用的是 C:\Program Files\Microsoft Visual Studio 9.0\Common7\IDE\PublicAssemblies\Microsoft.VisualStudio.QualityTools.UnitTestFramework.dll 版本为9.0.0.0 的话,则使用[ClassInitialize]会该方法必须是静态的公共方法,不返回值并且

Loadrunner参数化连接oracle、mysql数据源报错及解决办法

Loadrunner参数化连接oracle.mysql数据源报错及解决办法 (本人系统是Win7 64,  两位小伙伴因为是默认安装lr,安装在 最终参数化的时候,出现连接字符串无法自动加载出来: 最后通过安装在,问题到此解决 1.通过数据库连接参数化大量数据,电脑本地已经成功安装了数据库驱动,且本地可以配置数据源成功,在loadrunner 中配置数据源却找不到对应的数据库驱动. ----A:检查当前loadrunner工具的版本,是32位还是64位(目前还没有64位的),32位是不能安装64

SQLSERVER 创建ODBC 报错的解决办法 SQLState:&#39;01000&#39;的解决方案

错误详情如下: SQLState:'01000' SQL Server 错误:14 [Microsoft][ODBC SQL Server Driver][DBNETLIB] ConnectionOpen (Invalid Instance()). 连接失败: SQLState:'08001' SQL Server 错误:14 [Microsoft][ODBC SQL Server Driver][DBNETLIB] 无效的连接. 解决办法: 在创建ODBC数据源的步骤中,点击“客户端配置”,勾

关于 Notice: Undefined index: 2 in C:\wamp\www\...报错 的解决办法

首先,这个不是错误,是warning. 方法1:服务器配置修改 (Apache服务器中的php.ini配置文件)       修改php.ini配置文件,error_reporting = E_ALL & ~E_NOTICE 方法2:对变量进行初始化,规范书写(比较烦琐,因为有大量的变量). 方法3:每个文件头部加上:error_reporting(0); 如果不行,只有打开php.ini,找到display_errors,设置为display_errors = Off.以后任何错误都不会提示.