Добавьте jQuery.parseJSON в jQuery 1.3 - PullRequest
       26

Добавьте jQuery.parseJSON в jQuery 1.3

3 голосов
/ 08 декабря 2010

Можно ли расширить jQuery 1.3, включив в него функцию parseJSON из 1.4.1+, и заставить ее работать так же, как в jQuery 1.4.1+? Как бы я поступил об этом?

У меня есть несколько сайтов, где я должен использовать jQuery 1.3, но у меня есть инструмент, требующий parseJSON, который был представлен только в jQuery 1.4.1. Я смутно знаю, что мне следует взять parseJSON из 1.4.1+ и попытаться сделать его плагином, но я не знаю, как это сделать.

Ответы [ 3 ]

11 голосов
/ 08 декабря 2010

Вы можете сделать это плагином, как это:

$.extend({
    error: function( msg ) { throw msg; },
    parseJSON: function( data ) {
        if ( typeof data !== "string" || !data ) {
            return null;
        }    
        data = jQuery.trim( data );    
        if ( /^[\],:{}\s]*$/.test(data.replace(/\\(?:["\\\/bfnrt]|u[0-9a-fA-F]{4})/g, "@")
            .replace(/"[^"\\\n\r]*"|true|false|null|-?\d+(?:\.\d*)?(?:[eE][+\-]?\d+)?/g, "]")
            .replace(/(?:^|:|,)(?:\s*\[)+/g, "")) ) {    
            return window.JSON && window.JSON.parse ?
                window.JSON.parse( data ) :
                (new Function("return " + data))();    
        } else {
            jQuery.error( "Invalid JSON: " + data );
        }
    }
});

Вы можете проверить это здесь .
Этот код взят из jQuery 1.4.4 - найден здесь . После включения вышеупомянутого в jQuery 1.3, как ваш вопрос, просто используйте $.parseJSON(), как вы это обычно делаете ... или в вашем случае, просто включите плагины после кода выше, и $.parseJSON() будет присутствовать для их использования. 1011 *

1 голос
/ 08 декабря 2010

Вы можете использовать реализацию Crockfords: https://github.com/douglascrockford/JSON-js

Или здесь, по прямой ссылке: https://github.com/douglascrockford/JSON-js/blob/master/json_parse.js

0 голосов
/ 08 декабря 2010

Разве вы не можете редактировать код, который использует 1.3? Плагин jQuery.json предоставляет $ .toJSON и $ .evalJSON, которые эквивалентны новым из 1.4. Вы можете попробовать использовать нативный JSON.parse и JSON.stringify в браузерах, где это поддерживается. В старых браузерах вам нужно будет включить JSON2 , чтобы добавить поддержку JSON.parse и JSON.stringify для этих браузеров.

...