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格式错误

返回数据 语句用echo json_encode($data,true);但是用了echo json_decode($data);
由于函数使用不对,返回的data不是json数据,第一个字符是“ <”,所以报错Unexpected token < in JSON at position 0(翻译:json数据位置0处发现不能识别的标记<);

如果使用 $.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数据有影响。

以上这篇JS 调试中常见的报错问题解决方法就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持我们。

(0)

相关推荐

  • 可以用来调试JavaScript错误的解决方案

    A 使用alert() 和document.write() 方法监视变量值 如果要中断代码的运行,监视变量的值,则使用alert() 方法: 如果需要查看的值很多,则使用document.write() 方法,避免反复单击"确定"按钮: B 使用window.onerror 事件 当页面出现异常时,onerror 事件会在window 对象上触发.它能在一定程度上告诉开发者相关的错误信息. 示例: 复制代码 代码如下: <script type="text/javasc

  • JS中的异常处理方法分享

    js容错语句,就是js出错也不提示错误(防止浏览器右下角有个黄色的三角符号,要不用户体验不好) 复制代码 代码如下: window.onerror=function(){return true;} 下面是为了获取js异常信息,方便开发者找回问题 1,try...catch... 复制代码 代码如下: <script type="text/javascript">var txt=""function message(){try   {   adddlert

  • JavaScript 错误处理与调试经验总结

    下面总结一下JS错误处理与调试的方法 方法1:用alert() 和document.write()方法监视变量值. alert()在弹出对话框显示变量值的同时,会停止代码的继续运行,直到用户单击"确定"按钮,而document.write()则在输出值后继续运行代码.调试JS时可以根据具体情况来选择这种方法. 例如下面代码:将数组a中以1开头的数据添加到数组b中 复制代码 代码如下: <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.

  • 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文件在eclipse下报错问题解决方法

    在工程中导入jquery-1.7.1之后一直有一个红叉叉,虽然不会影响程序功能,但是看着非常不舒服,而且在提交项目代码到SVN服务器的时候有提示,决心把这红叉叉给搞掉.网上搜了下基本都不能解决问题,然后在尝试各种方式之后发现下面的方法可行: 1右击工程,选择property. 2在弹出的界面中选择Validation 3点击右边的JavaScript Syntax Validator的Settings 4在弹出的窗口中点击Add Exclude Group 5在Exclude Group中把jq

  • 关于IDEA2020.1新建项目maven PKIX 报错问题解决方法

    报错问题如图: 仔细看报错问题后发现,这个错误的主要原因是: ValidatorException:PKIX path building failed : sun.security.provider.certpath.SunCertPathBuilderException : unable to find valid certification path to requested target 造成这个错误的原因是因为有些依赖和插件下载的时候需要验证证书,网上找了好多资料最终解决的,我这里集合了

  • 教你解决往mysql数据库中存入汉字报错的方法

    一.遇到的问题 在向数据库中存入汉字时遇到这样的问题: Cause: java.sql.SQLException: Incorrect string value: '\xE6\x9F\xAF\xE5\x8D\x97' for column 'user_name' at row 1 二.分析问题 这是由于数据库设计有问题导致的,当初创建数据库的时候直接选择的默认,没有修改为utf-8,后来尝试手动修改还是不行. 尝试把数据库和表的默认字段改为utf8,但是还是不能存汉字. 三.真正的问题 真正的问

  • IDEA 2021.2 激活教程及启动报错问题解决方法

    关于idea2021最新激活教程,请点击此处,获取最新激活教程 还有一种激活方法,点击此处获取吧 ! 下面看下IDEA 2021.2 启动报错问题解决方法,内容如下所示: 错误信息如下: Plugin 'some.awesome' failed to initialize and will be disabled. Please restart IntelliJ IDEA. java.lang.NullPointerException     at NyanApplicationComponen

  • CentOS 6.5上的Tomcat启动报错问题解决方法

    这里有两个错误: 1.第一个错误,APR的问题,错误详情: The APR based Apache Tomcat Native library which allows optimal performance in production environments was not found on the java.library.path 2.第二个错误,错误详情: Exception in thread "main" java.lang.InternalError        

  • centOS7下mysql插入中文字符报错问题解决方法

    在刚装完mysql,就建立了数据库abc,然后新建一个abc表,插入英文没有问题,但是插入中文就有问题,会报错: ERROR 1366 (HY000): Incorrect string value: '\xE4\xBD\x99\xE9\x93\xB6...' 应该是数据库编码问题,所以应该改数据库编码 这里有2中方法.一种是直接敲代码设置,一种是在CentOS7中修改文件/usr/my.cnf, 第一种方法: 列出数据库的编码表 mysql> show variables like '%cha

  • 详解Anaconda安装tensorflow报错问题解决方法

    最近脱离了googlecolab想使用本地的anaconda进行机器学习课题的演练,在安装tensorflow时报错 : UnsatisfiableError: The following specifications were found.下面给出解决方法. 发现实际原因是由于anaconda的python环境,当前版本的tensorflow只能适用于python 3.5 3.6 3.7等衍生版本,而anaconda自带的python版本为3.8. 首先打开控制台 使用以下命令可以查看当前的a

  • webstorm和.vue中es6语法报错的解决方法

    1.webstorm中es6语法报错,解决方法: 打开 Settings => Languages & Frameworks => Javascript 把 Javascript Language version 改为 ECMAScript 6 这样做所有的.js文件中es6不再报错,但是.vue文件中es6语法依然报错. 2. .vue文件中es6语法报错 (1)打开 Settings => File Types 找到 HTML 添加 *.vue 这样vue文件就相当于html

  • vue踩坑记之npm install报错问题解决总结

    目录 前言 常见的有以下多种情况 总结 前言 很多时候安装npm install 的时候并不能直接将当前的node_modules直接一键安装到本地. 总是会出现各种各样的报错 常见的有以下多种情况 tip1:本地node 跟npm 版本不匹配,项目创建者当时的版本为14 ,而新开发者本地node默认为最新需要重新降低版本,使用cmd打开查看本地node和npm版本,询问一下同事的版本,直接去node官网重新 下载安装新的node安装包即可,或者如果本地有多个新老项目为了方便的管理各个node的

随机推荐

其他