我们想使用最新版本的jQuery,在编写本文时是1.9.1,但是要替换$ .parseJSON的实现。
说明jQuery更改的文档:http://api.jquery.com/jQuery.parseJSON/
是否有一些JavaScript可以用来告诉jQuery将$ .parseJSON函数的“自然”版本替换为另一个具有相同名称的实现/函数...来自jQuery 1.8.3的版本?
http://code.jquery.com/jquery-1.8.3.js具有我们需要的功能实现。
答案 0 :(得分:2)
如果必须,请这样做:
jQuery._parseJSON = jQuery.parseJSON;
jQuery.parseJSON = function( data ) {
if ( !data || typeof data !== "string") {
return null;
}
return jQuery._parseJSON( data );
}
答案 1 :(得分:1)
我不推荐它,但如果你还想这样做
创建一个jquery-override.js文件并将以下内容添加到其中
jQuery.parseJSON = function( data ) {
if ( !data || typeof data !== "string") {
return null;
}
// Make sure leading/trailing whitespace is removed (IE can't handle it)
data = jQuery.trim( data );
// Attempt to parse using the native JSON parser first
if ( window.JSON && window.JSON.parse ) {
return window.JSON.parse( data );
}
// Make sure the incoming data is actual JSON
// Logic borrowed from http://json.org/json2.js
if ( rvalidchars.test( data.replace( rvalidescape, "@" )
.replace( rvalidtokens, "]" )
.replace( rvalidbraces, "")) ) {
return ( new Function( "return " + data ) )();
}
jQuery.error( "Invalid JSON: " + data );
}
然后在jquery-1.9.1.js文件之后包含此文件
答案 2 :(得分:0)
如果您的问题与jQuery的 $。ajax()方法的上下文中出现的 $。parseJSON()调用有关,那么这是一个不错的解决方案。您可以通过设置如下转换器来覆盖从JSON String到JS Object的默认转换:
$.ajaxSetup({
converters: { "text json": function (jsonString) {
var jsonObj = mySpecialParsingMethod(jsonString);
return jsonObj;
} }
});
如果您没有就$ .ajax()方法问这个问题,那么请不要问。 : - )