Safari и Chrome не хотят JSON.parse - PullRequest
       1

Safari и Chrome не хотят JSON.parse

2 голосов
/ 09 октября 2011

Я пробую localStorage и JSON, используя различные браузеры с этим фрагментом кода:

        function getStorage() {
            stored = JSON.parse(localStorage['test']);
            if (typeof stored == 'object') {return stored;}
        }

Chrome выдает следующее сообщение об ошибке: "Uncaught SyntaxError: Unexpected token u" для первой строки внутри тела функции.Для этой же строки Safari говорит «SyntaxError: невозможно проанализировать строку JSON» .Firefox не выдает никаких сообщений об ошибках для этой строки.

Другие примеры JSON.parse (из книг и т. Д.) Отлично работают как в Safari, так и в Chrome.Например, это из "Pro JavaScript" Николаса Закаса:

            var jsonText = "{\"name\":\"Nicholas C. Zakas\", \"age\":29, \"author\":true }";
            var object = JSON.parse(jsonText);
            alert(object.name);  //"Nicholas C. Zakas"

Нет проблем с тем, чтобы заставить это работать.Локальное хранилище также отлично работает в обоих случаях.

Я также проверил кодировку для всех моих файлов, используя file -I my file, и все файлы, как мои, так и те, что из вышеприведенной книги, кодируются как filename.html: text/html; charset=us-ascii- так что кодирование здесь не является проблемой.

Это сбивает с толку.Большое спасибо за любую помощь.

/ Джеймс

Ответы [ 2 ]

0 голосов
/ 01 октября 2012

Это потому, что содержимое localStorage['test'] равно undefined, следовательно, неожиданно u.

0 голосов
/ 15 сентября 2012

Спасибо за совет по прямой отладке содержимого localStorage.Ошибка была в строке if (localStorage.length == 0).У меня были некоторые другие данные в localStorage из предыдущих приложений, поэтому json ничего не установил в этом условном выражении.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...