zoukankan      html  css  js  c++  java
  • jQuery1.4.2与json格式兼容问题


    文章分类:Web前端

    原来使用jQuery1.3.2编写的代码,更换到1.4.2后,使用jQuery.ajax()加载的json文件,不能正常加载。(使用jQuery.getJSON()也一样)

     

    原json文件内容为:

    {
        label: 'Europe (EU27)',
        data: [[1999, 3.0], [2000, 3.9], [2001, 2.0], [2002, 1.2], [2003, 1.3], [2004, 2.5], [2005, 2.0], [2006, 3.1], [2007, 2.9], [2008, 0.9]]
    }

     

    解决方法一:

    改成标准的json格式,要求对字符串都使用""限定,修改后的内容为:

    {
        "label": "Europe (EU27)",
        "data": [[1999, 3.0], [2000, 3.9], [2001, 2.0], [2002, 1.2], [2003, 1.3], [2004, 2.5], [2005, 2.0], [2006, 3.1], [2007, 2.9], [2008, 0.9]]
    }

     

    这样就可以正常加载了。

     

    解决方法二:

    在jQuery-1.4.2.js中找到"parseJSON: function",可发现有如下代码:

    Js代码 
    1.         // Logic borrowed from http://json.org/json2.js  
    2. if ( /^[\],:{}\s]*$/.test(data.replace(/\\(?:["\\\/bfnrt]|u[0-9a-fA-F]{4})/g, "@")  
    3.     .replace(/"[^"\\\n\r]*"|true|false|null|-?\d+(?:\.\d*)?(?:[eE][+\-]?\d+)?/g, "]")  
    4.     .replace(/(?:^|:|,)(?:\s*\[)+/g, "")) ) {  
    5.   
    6.   
    7.     // Try to use the native JSON parser first  
    8.     return window.JSON && window.JSON.parse ?  
    9.         window.JSON.parse( data ) :  
    10.         (new Function("return " + data))();  
    11.   
    12. else {  
    13.     jQuery.error( "Invalid JSON: " + data );  
    14. }  

     


    在httpData: function中用到了parseJSON函数:

    Js代码 
    1. // Get the JavaScript object, if JSON is used.  
    2.             if ( type === "json" || !type && ct.indexOf("json") >= 0 ) {  
    3.                 data = jQuery.parseJSON( data );  
     

    在jQuery1.3.2中,没有parseJSON这个方法,而是直接使用下面的代码。

    Js代码 
    1. // Get the JavaScript object, if JSON is used.  
    2.             if ( type == "json" )  
    3.                 data = window["eval"]("(" + data + ")");  

    替换成原来1.3.2的代码就可以了。

  • 相关阅读:
    怎么查看京东店铺的品牌ID
    PPT编辑的时候很卡,放映的时候不卡,咋回事?
    codevs 1702素数判定2
    codevs 2530大质数
    codevs 1488GangGang的烦恼
    codevs 2851 菜菜买气球
    hdu 5653 Bomber Man wants to bomb an Array
    poj 3661 Running
    poj 1651 Multiplication Puzzle
    hdu 2476 String Painter
  • 原文地址:https://www.cnblogs.com/smallmuda/p/1950566.html
Copyright © 2011-2022 走看看