Home > Web Front-end > JS Tutorial > Solution for compatibility between jQuery1.4.2 and older versions of json format_jquery

Solution for compatibility between jQuery1.4.2 and older versions of json format_jquery

WBOY
Release: 2016-05-16 18:10:51
Original
1264 people have browsed it
The original json file content is:
{
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]]
}
Solution 1:
Change to standard json format, requiring all strings to be qualified with "". The modified content is:
{
"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]]
}
This will load normally.
Solution 2:
Find "parseJSON: function" in jQuery-1.4.2.js, you can find the following code:
Copy code The code is as follows:

// Logic borrowed from http://json.org/json2.js
if ( /^[ ],:{}s]*$/.test(data.replace(/\(?:["\/bfnrt]|u[0-9a-fA-F]{4})/g, "@")
.replace(/"[^"\nr]*"|true|false|null|-?d (?:.d*)?(?:[eE][ -]?d )?/g, "]")
.replace(/(?:^|:|,)(?:s*[) /g, "")) ) {
// Try to use the native JSON parser first
return window.JSON && window.JSON.parse ?
window.JSON.parse( data ) :
(new Function("return " data))();
} else {
jQuery.error( "Invalid JSON: " data );
}

The parseJSON function is used in httpData: function:
Copy the code The code is as follows:

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

In jQuery1.3.2, there is no parseJSON method, but Use the code below directly.
Copy code The code is as follows:

// Get the JavaScript object, if JSON is used.
if ( type == "json" )
data = window["eval"]("(" data ")");

Replace with the original 1.3.2 code That's it.
The following are some additions from other netizens:
The jquery1.4.2 version has doubled its performance, but one troublesome thing is the $.getJSON function, which originally used the old If the JSON data of the version is not written in a standard way, the JSON data cannot be obtained normally using this version
For example:
Non-standard way of writing JSON
Copy code The code is as follows:

{Err:1,errmsg:'Invalid ID value! Please submit from the correct form page!'}

Old versions below jquery 1.4.x can be obtained normally. If you use this format when developing your program, it will be a headache, because if you upgrade JQUERY to a new version, this format cannot be read
JSON standard writing method, all versions can be obtained normally
Copy the code The code is as follows:

{"Err":1,"errmsg":"Invalid ID value! Please submit from the correct form page!"}

This is because native json is used in jquery1.4.X version parser has strict requirements for json format
If you don’t want to modify the JSON data of the program, is there any other way to make the old and new data suitable for use in the new version?
There is a method, just restore the old version of the JSON processing function. The modification method is as follows:
jq1.4.x Regular version modification
Open the jquery-1.4.x.js file and find The following code:
data = jQuery.parseJSON( data );
modified to the following code:
data = window["eval"]("(" data ")");
jq1.4 .x Minified version modification
Open the jquery-1.4.x.min.js file and find the following code:
a=c.parseJSON(a);
Change to the following code:
a= window ["eval"]("(" a ")");
Try your program, haha, is $.getJSON normal?
Of course, if you have the ability to write regular expressions, you can modify the JSON processing regular expressions in the new version of the parseJSON function.
Related labels:
source:php.cn
Statement of this Website
The content of this article is voluntarily contributed by netizens, and the copyright belongs to the original author. This site does not assume corresponding legal responsibility. If you find any content suspected of plagiarism or infringement, please contact admin@php.cn
Popular Tutorials
More>
Latest Downloads
More>
Web Effects
Website Source Code
Website Materials
Front End Template