zoukankan      html  css  js  c++  java
  • $.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的一个子集。

  • 相关阅读:
    连通分量板子
    2017年7月17日
    强连通缩点— HDU1827
    马拉车代码
    表达式求值
    Gym-100883F、Gym-101095B状态压缩小结
    矩阵快速幂小结-Hdu2604
    3月27日
    简单移动端自适应轮播图
    上了热搜榜前端工程师面试内幕
  • 原文地址:https://www.cnblogs.com/digdeep/p/5468529.html
Copyright © 2011-2022 走看看