$.parseJson 在 firefox 下返回 null 的问题
最近调查一个浏览器兼容性问题,在 IE, chrome下都运行正常,但是在 firefox 下运行时:
$.parseJson(xxx) 返回 null,所以导致了 无法正常运行,调查的结果是因为 返回是,没有使用下面的语句定义返回值的类型:
response.setContentType("text/html; charset=utf-8");
导致了 firefox 以为返回的 是 xml 数据(alert时弹出 xml object),导致 $.parseJson(xx) 对返回的数据进行解析成 json 时返回了 null.
其实 后端返回 json 格式的数据一般而言有三种方法:
1.
response.setContentType("text/html; charset=utf-8");
然后 客户端使用 $.parseJson(xx) 进行解析成 json 对象;
2.
response.setContentType("text/javascript");
此时,浏览器自动调用自带的 JSON.parse(xxx) 函数自动 将字符流解析成 json 对象。不需要我们自己使用 $.parseJson(xx) 去解析,我直接将结果当初 json 对象使用就行了。
PS:
response.setContentType("text/javascript");
结果其实 是设置了 http 协议 的头部信息,然后 浏览器就可以根据 头部信息,自动调用 JSON.parse() 函数解析成 json 对象,给我们使用。
熟悉http的一些基本原理,还是比较有帮助的,能够从深层次上理解问题。
3.
response.setContentType("application/json")
3和2直接的区别就是 json 和 js 代码的区别。json是js的一个子集。
随机推荐
- 【JUC】JDK1.8源码分析之ReentrantReadWriteLock(七)
一.前言 在分析了锁框架的其他类之后,下面进入锁框架中最后一个类ReentrantReadWriteLock的分析,它表示可重入读写锁,ReentrantReadWriteLock中包含了两种锁,读锁 ...
- 学习php中的正则表达式,PHP正则表达式基础
语法格式:位于定界符"/"之间. 较为常用的元字符包括: “+”, “*”,以及 “?”. 其中, “+”元字符规定其前导字符必须在目标对象中连续出现一次或多次, “*”元字符规定 ...
- EF框架组件详述【Entity Framework Architecture】(EF基础系列篇3)
我们来看看EF的框架设计吧: The following figure shows the overall architecture of the Entity Framework. Let us n ...
- AngularJS----基本操作
之前的学习基本了解了AngularJS的常用方法,下来就继续学习吧. 创建自定义的指令 除了内置指令,我们可以创建自定义指令.通过.directive函数来添加. <div change-dat ...
- 自己实现简单的AOP(一)简介
AOP 和 OOP,在我看来是两种相辅相成的技术,作为OOP的补充,AOP 有着自己特殊的应用场景. 假设,我们需要在Service层实现以下几项基本功能: /// <para>1.自动管 ...
- windows对象模型分类
- 51nod 算法马拉松18 A 染色问题
染色问题 基准时间限制:1 秒 空间限制:10240 KB 分值: 40 一个n(3<=n<=100)个点的完全图,现在给出n,要求将每条边都染上一种颜色k(1<=k<=n), ...
- 如何使 WebAPI 自动生成漂亮又实用在线API文档
1.前言 1.1 SwaggerUI SwaggerUI 是一个简单的Restful API 测试和文档工具.简单.漂亮.易用(官方demo).通过读取JSON 配置显示API. 项目本身仅仅也只依赖 ...
- Java程序员应该知道的10个调试技巧
试可以帮助识别和解决应用程序缺陷,在本文中,作者将使用大家常用的的开发工具Eclipse来调试Java应用程序.但这里介绍的调试方法基本都是通用的,也适用于NetBeans IDE,我们会把重点放在运 ...
- java多线程-读写锁
Java5 在 java.util.concurrent 包中已经包含了读写锁.尽管如此,我们还是应该了解其实现背后的原理. 读/写锁的 Java 实现(Read / Write Lock Java ...