$.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的一个子集。
随机推荐
- Java中写文件操作
OutputStream 和 Writer OutputStream类(直接操作byte数组) 该类是字节输出流的抽象类,定义了输出流的各种操作方法.如下图是OutputStream的层次结构: By ...
- RadioGroup、RadioButton、CheckBox、Toast用法
xml布局文件如下: <RadioGroup android:id="@+id/sex" android:layout_width="wrap_content&qu ...
- 【集合框架】JDK1.8源码分析之Collections && Arrays(十)
一.前言 整个集合框架的常用类我们已经分析完成了,但是还有两个工具类我们还没有进行分析.可以说,这两个工具类对于我们操作集合时相当有用,下面进行分析. 二.Collections源码分析 2.1 类的 ...
- eclipse maven update error 解决方法
eclipse maven update error 解决方法 本来真不想写这篇博文的,但是eclipse和maven真的是太操蛋了,动不动就出了一些乱七八糟的问题,记录一下.希望公司能早 ...
- iOS的一些面试题分析总结(0)
虽然一些东西在实际工作中我们是很少用到的,但是面试确实会经常问到一些我们不常用的东西,所以说有时候看一看还是有必要的,一方面面试也是很重要的一件事,另一方面某些情况下也能帮我们查漏补缺. 一.NSNo ...
- 在C#中,Json的序列化和反序列化的几种方式总结
在这篇文章中,我们将会学到如何使用C#,来序列化对象成为Json格式的数据,以及如何反序列化Json数据到对象. 什么是JSON? JSON (JavaScript Object Notation) ...
- 基于<MediaElement>的WPF视频播放器(终章)【3】
一.前言 对于<MediaElement>前两章介绍了差不多了,其实好的界面还需要UI工程师的配合,比如帮忙设计下按钮的样式等等.同样视频本身也需要吸引人,不然做的再好的播放器也没用.之后 ...
- C#开发微信门户及应用(45)--微信扫码登录
在前面随笔<C#开发微信门户及应用(41)--基于微信开放平台的扫码登录处理>介绍了基于微信开放平台接口实现的微信扫码直接登录的过程.本篇介绍对扫码登录的一些改进和处理,以便更方便应用在实 ...
- 第一篇:Entity Framework 简介
先从ORM说起吧,很多年前,由于.NET的开源组件不像现在这样发达,更别说一个开源的ORM框架,出于项目需要,以及当时OOP兴起(总不至于,在项目里面全是SQL语句),就自己开始写ORM框架.要开发O ...
- [WCF编程]10.操作:请求/应答操作
一.调用操作概述 WCF除了支持经典的服务端-客户端的请求/应答操作外,还提供了对其他操作类型的内建支持,包括:即发即弃的单向调用:允许服务将调用返回给客户端的双向回调:允许客户端或服务器处理大量负荷 ...