网站链接: 我爱捣鼓
当前位置: 首页 > 前端开发 > javascript

报错Unexpected token o in JSON at position 1怎么解决?

2023/1/29 22:20:40

报错Unexpected token o in JSON at position 1怎么解决?iis7.5中mime类型默认没有.json,.woff,.woff2等文件类型,需要手动添加。不添加的话,http请求时无法识别json数据,导致请求失败。iis10.0中默认已有上述文件类型,无需手动添加。IIS7 需要在Mimetype 增加json扩…

      iis7.5中mime类型默认没有.json,.woff,.woff2等文件类型,需要手动添加。不添加的话,http请求时无法识别json数据,导致请求失败。

      iis10.0中默认已有上述文件类型,无需手动添加。

      IIS7 需要在Mimetype 增加json扩展名,不然会报404错误. 但IIS7还是把他当成字符串处理. 所以下面这段代码在IIS7里运行良好,没有错误

$.get('7days.json?t='+ new Date()).done(function (jsonStr) {
    allJson =JSON.parse(jsonStr);
}));

      但是部署在win10的IIS里就会发现, IIS10默认已经支持json, 而且你用url访问json文件,它会自动把它序列化Json对象, 这句代码就会出现下面的错误:

Unexpected token o in JSON at position 1

      报错的原因 ,因为你要转换的数据本来就是Json object,JavaScript中的JSON.parse()这个方法是把一个字符串解析出json对象,你再转换就会报错;

  • 为什么会有这样的错误?

      因为把Object作为参数传到JSON.parse()里时,首先会默利用toString()方法转为string,结果为"[object Object]"。

      JSON.parse()将第一个字符’['理解为数组的开始,第二字符’o’不知道怎么处理;所以就抛出了上面的错误信息 Unexpected token o in JSON at position 1。

      改成下面的代码就可以兼容了, 先判断一下返回值是否字符串或对象

        $.get('7days.json?t='+ new Date()).done(function (jsonStr) {
            if(typeof(jsonStr)=="string")
                allJson =JSON.parse(jsonStr);
            else
                allJson =JSON.parse(JSON.stringify(jsonStr));
  • Win10的IIS与以前版本的一个区别

      Win10系统的IIS是v10,在“启用或关闭Windows功能”中启用IIS时,如果按照默认勾选,则在应用程序池中没有ASP.NET 4.0。过去我们的办法是注册一下asp.net4.0,即在控制台下运行C:\WINDOWS\Microsoft.NET\Framework64\v4.0.30319

aspnet_regiis.exe -i。而在win10下如此操作无效,提示“此操作系统不支持此选项......需要安装/卸载包含IIS8的ASP.NET4.5”。这时,我们可以在“启用或关闭Windows功能”中安装ASP.NET4.6,值得注意的是,该界面下有2个ASM.NET4.6选框,需要选择IIS功能下的那一个。

        通过以上内容我们知道了报错Unexpected token o in JSON at position 1的问题如何解决?感谢您访问“我爱捣鼓(www.woaidaogu.com)”网站的内容,希望对大家有所帮助!引用本文内容时,请注明出处!谢谢合作!

相关资讯

  • vue兄弟平级组件如何传递参数值?

    vue组件传值不外乎三种,父传子、子传父、平级,今天我们就来着重说说vue平级组件如何传递参数值? 假设你有两个Vue组件需要通信: A 和 B ,A组件按钮上面绑定了点击事件,发送一则消息,B组件接收。初始化,全局创建$bus 直接在项目中的 main.js 初始化 …

    2023/1/7 13:08:32
  • js如何遍历数组保存需要的

    我们如何通过遍历数组删除不需要的,保留需要的内容呢?我们来看看下面的代码是如何实现的。<!DOCTYPE html><html xmlns="http://www.w3.org/1999/xhtml"><head> <title>js如何遍历数组保存需要的</title> <meta http-…

    2021/5/16 21:43:10
  • js写的urldecode函数及作用

    本函数对字符串进行URL解码。例如通过urlencode编码后的字符串,可通过UrlDecode进行解码。对Url路径加码的函数是UrlEncode 用法相反,和UrlDecode是一致对应的URLEncode是这样编码的 1、数字和字母不变。 2、空格变为"+"号。 3、其他被编码成&…

    2021/5/16 16:25:41
  • js getelementbyid后获取下一级的ID的方法

    根据id获取父对象,然后使用childNodes获取所有子对象数组,关键代码:document.getElementById(div_id).childNodes; // 子对象数组实现代码:<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xh…

    2021/5/9 13:28:27
  • javascript使用settimeout闭包实现倒计时

    闭包知识1、闭包的概念:指有权访问另一个函数作用域中的变量的函数,一般情况就是在一个函数中包含另一个函数。2、闭包的作用:访问函数内部变量、保持函数在环境中一直存在,不会被垃圾回收机制处理因为函数内部声明 的变量是局部的,只能在函数内部访问到,但是函数外…

    2021/4/24 19:56:28
  • js定时器setInterval清除之后还会执行

    今天在博客上看到有人问js定时器setInterval清除之后还会执行,他是js定时器控制一个盒子做旋转动画,离开页面后js定时器还在执行,但是盒子这个dom却被浏览器消除了,以至于再次进入该页面时动画会加速执行。解决方法 离开页面时清除定时器 进入时重新开启定时器d…

    2021/4/24 16:06:27
  • js添加删除表格table行列-附源码

    <!DOCTYPE htmlPUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"><html xmlns="http://www.w3.org/1999/xhtml"><head><meta http-equiv="Content-…

    2021/3/26 21:48:19
  • js如何判断页面某个元素是否已经绑定某个事件?

    我们有时防止页面元素重复绑定事件,需要判断一下页面对应的元素是否已经绑定了事件,下面就是我写了一个javascript函数用来判断页面某个元素是否已经绑定某个事件:javascript代码var div = document.getElementById(div);logEvent(click , div , false , false , funct…

    2021/3/24 21:20:27
  • A域名js访问B域名对象如何实现?JavaScript跨域解决办法

    什么是跨域JavaScript出于安全方面的考虑,不允许跨域调用其他页面的对象。但在安全限制的同时也给注入iframe或是ajax应用上带来了不少麻烦。这里把涉及到跨域的一些问题简单地整理一下:首先什么是跨域,简单地理解就是因为JavaScript同源策略的限制,a.com 域名下的js无…

    2021/3/11 22:44:58
  • js如何模拟手机平板移动设备--触摸、点击、滑屏(附源码)

    前一阵子公司做项目,手机上的网页需要js来模拟手机平板等移动设备的触摸、点击、滑屏效果,直接上代码,供大家参考(function(doc, win, undefined) { "use strict"; var start = { //记录开始的触点 x: 0, y: 0 }, …

    2021/2/28 22:08:08