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:
// 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:
// 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.
// 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
{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
{"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.