今天遇到一个问题,后台传递过来的json对象,在前端解析的时候用JSON.parse(result)方法不好使,查了一下是因为ie浏览器的问题。然后在网上翻了翻,找到了这个办法,可以使这个函数在ie中生效。记录下来备用。

  需要的时候在这个页面加载的时候先加载这个函数,然后后续就可以正常使用  var json = JSON.parse(result);

  1. $(function(){
  2. /**********************************************json兼容IE8*****************************************************/
  3. //json不兼容的解决办法:
  4. if (!window.JSON) {
  5. window.JSON = {
  6. parse: function(jsonStr) {
  7. return eval('(' + jsonStr + ')');
  8. },
  9. stringify: function(jsonObj) {
  10. var result = '',
  11. curVal;
  12. if (jsonObj === null) {
  13. return String(jsonObj);
  14. }
  15. switch (typeof jsonObj) {
  16. case 'number':
  17. case 'boolean':
  18. return String(jsonObj);
  19. case 'string':
  20. return '"' + jsonObj + '"';
  21. case 'undefined':
  22. case 'function':
  23. return undefined;
  24. }
  25.  
  26. switch (Object.prototype.toString.call(jsonObj)) {
  27. case '[object Array]':
  28. result += '[';
  29. for (var i = 0, len = jsonObj.length; i < len; i++) {
  30. curVal = JSON.stringify(jsonObj[i]);
  31. result += (curVal === undefined ? null : curVal) + ",";
  32. }
  33. if (result !== '[') {
  34. result = result.slice(0, -1);
  35. }
  36. result += ']';
  37. return result;
  38. case '[object Date]':
  39. return '"' + (jsonObj.toJSON ? jsonObj.toJSON() : jsonObj.toString()) + '"';
  40. case '[object RegExp]':
  41. return "{}";
  42. case '[object Object]':
  43. result += '{';
  44. for (i in jsonObj) {
  45. if (jsonObj.hasOwnProperty(i)) {
  46. curVal = JSON.stringify(jsonObj[i]);
  47. if (curVal !== undefined) {
  48. result += '"' + i + '":' +curVal + ',';
  49. }
  50. }
  51. }
  52. if (result !== '{') {
  53. result = result.slice(0, -1);
  54. }
  55. result += '}';
  56. return result;
  57.  
  58. case '[object String]':
  59. return '"' + jsonObj.toString() + '"';
  60. case '[object Number]':
  61. case '[object Boolean]':
  62. return jsonObj.toString();
  63. }
  64. }
  65. };
  66. }
  67.  
  68. /**********************************************json兼容IE8*******************************************************/
  69. });

  

json兼容ie8的更多相关文章

  1. jQuery ajax 动态append创建表格出现不兼容ie8

    非常多情况下.通过js(jQuery1.10)动态来创建一些样式,对页面的动态交互来说是非常方便的 可是不同的浏览器针对动态生成的不是非常兼容,在此遇见的不兼容ie8.跟各位分享下 代码: json数 ...

  2. 兼容ie8的多维数组——深拷贝

    浅拷贝只是把对象的内存位置指针给拷贝了,若修改拷贝对象,则原对象也会跟踪修改. var a = {a : 'old', b : { c : 'old'}} var b = Object.assign( ...

  3. 兼容IE8以下浏览器input表单属性placeholder不能智能提示功能

    当前很多表单提示使用了表单属性placeholder,可这属性不兼容IE8以下的浏览器,我自己写了一个兼容处理js // 兼容IE8以下浏览器input不能智能提示功能 if(navigator.ap ...

  4. 如何使用videojs兼容IE8浏览器

    需要在服务器下运行 首先我们需要下载videojs包 https://github.com/videojs/video.js/releases 这里简单写了一个小栗子 <!DOCTYPE htm ...

  5. jQuery validate兼容IE8写法

    最近做项目的时候遇到一个validate插件在IE8下面点击submit按钮没有执行检查的BUG 在chrome和FF,还有IE9以上都可以.百度了好多文章都没有找到解决方法,后面自己测试找到了问题. ...

  6. 兼容ie8 rgba()用法

    今天遇到了一个问题,要在一个页面中设置一个半透明的白色div.这个貌似不是难题,只需要给这个div设置如下的属性即可: background: rgba(255,255,255,.1); 但是要兼容到 ...

  7. 【转】让Bootstrap 3兼容IE8浏览器

    FROM : http://www.ijophy.com/2014/05/bootstrap3-compatible-with-ie8.html 最近在研究Bootstrap(官方,Github)这个 ...

  8. 让Bootstrap 3兼容IE8浏览器

    最近在研究Bootstrap(官方,Github)这个优秀的前端框架,Bootstrap最开始是Twitter团队内部的一个前端框架,所谓前端框架就是一个CSS/HTML框架,框架里面有下拉菜单.按钮 ...

  9. css样式设置图片半透明度,兼容IE8,火狐

    关于背景颜色透明的兼容浏览器的问题,一直是个问题,我所写的兼容IE8,和火狐,说是兼容所有浏览器我就没有测试,有兴趣的朋友可以自己测试下吧. background-color:white;filter ...

随机推荐

  1. UX术语详解:任务流,用户流,流程图以及其它全新术语

    以下内容由Mockplus(摹客)团队翻译整理,仅供学习交流,Mockplus是更快更简单的原型设计工具. 用户体验拥有一长串专业的术语和可交付内容.当在线查看UX相关职位描述时,所罗列的这类术语更是 ...

  2. iOS隐藏导航条1px的底部横线

    第二种方法:1)声明UIImageView变量,存储底部横线 @implementation MyViewController { UIImageView *navBarHairlineImageVi ...

  3. 利用JS判断浏览器版本

    function checkBrowser() { var browserName = navigator.userAgent.toLowerCase(); //var ua = navigator. ...

  4. [label][IDE] Develop Node.js Project With WebStorm

    WebStorm 是一个支持 Node.js,CoffeeScript, TypeScript, Dart, Jade, Sass, LESS and Stylus 这些最新 web 开发技术的集成开 ...

  5. 初尝2D骨骼动画编辑工具SPINE,并into Unity3D

    一.SPINE使用 研究2D骨骼动画,CYou的朋友介绍我SPINE这个工具,开发自Esoteric Software的一款专门制作2D动画的软件,网络上的资料还很少,我这从半吊子美术技术的角度简单说 ...

  6. 微信公众开发URL和token填写详解

    微信公众开发URL和token填写详解 方法/步骤     作为一名微信公众号开发者,别人进入你的微信公众号,肯定会看见某些网页,或者给你发某些信息,你需要实时自动回复,所以你需要一个24小时为用户服 ...

  7. 数据集和JSON相互转换

    使用DELPHI原生类实现数据集和JSON相互转换  JSON二要素:数组和对象.对象可以包含数组,数组可以包含对象.无层数限制.OLEVARIANT也类似,OLEVARIANT的一个元素又可以是OL ...

  8. django设置cookie和session

    1 设置cookie 本例中应用名称为cookie 模型model from django.db import models from django.db import models class Us ...

  9. 更改kvm虚拟机磁盘大小

    kvm 虚拟机的磁盘大小可通过命令:qemu-img resize filename size 来改,要注意的是resize只支持raw格式的磁盘文件,如果想更改qcow2等格式的磁盘大小,需先用qe ...

  10. SparkSQL大数据实战:揭开Join的神秘面纱

    本文来自 网易云社区 . Join操作是数据库和大数据计算中的高级特性,大多数场景都需要进行复杂的Join操作,本文从原理层面介绍了SparkSQL支持的常见Join算法及其适用场景. Join背景介 ...