Почему этот код JSON.parse не работает? - PullRequest
2 голосов
/ 28 марта 2010

Я пытаюсь передать закодированные в json значения из сценария php в файл GnuBookTest.js, javascript, который инициирует объект Bookreader и использует значения, которые я передал через переменную i, названную «result».

Скрипт php отправляет такие значения как:

<div id="bookreader">
 <div id="BookReader" style="left:10px; right:10px; top:30px; bottom:30px;">x</div>
 <script type="text/javascript">var result = {"istack":"zi94sm65\/BUCY\/BUCY200707170530PM","leafCount":"14","wArr":"[893,893,893,893,893,893,893,893,893,893,893,893,893,893]","hArr":"[1155,1155,1155,1155,1155,1155,1155,1155,1155,1155,1155,1155,1155,1155]","leafArr":"[0,1,2,3,4,5,6,7,8,9,10,11,12,13]","sd":"[\"RIGHT\",\"LEFT\",\"RIGHT\",\"LEFT\",\"RIGHT\",\"LEFT\",\"RIGHT\",\"LEFT\",\"RIGHT\",\"LEFT\",\"RIGHT\",\"LEFT\",\"RIGHT\",\"LEFT\"]"}</script>
 <script type="text/javascript" src="http://localhost:8080/application/js/GnuBookTest.js"></script>
 </div>
</div>

и в файле GnuBookTest.js я пытаюсь использовать такие значения, как:

br = new BookReader();

// Return the width of a given page.
br.getPageWidth = function(index) {
     return this.pageW[index];
}

// Return the height of a given page.
br.getPageHeight = function(index) {
    return this.pageH[index];
}

br.pageW = JSON.parse(result.wArr);

br.pageH = JSON.parse(result.hArr);

br.leafMap = JSON.parse(result.leafArr);

//istack is an url fragment for location of image files
var istack = result.istack;
.
.
.

Использование JSON.parse, как я уже писал выше, загружает Bookreader и правильно использует мои значения в нескольких веб-браузерах: Firefox, IE8 и desktop-Safari; но не работает вообще в mac-Chrome, mobile-Safari и старых версиях IE. Мобильное сафари продолжает давать мне ссылку ошибки msg: не могу найти переменную: JSON. Другие браузеры просто не загружают Bookreader и вместо этого показывают «x», как будто они не получают значения из сценария php.

Где проблема?

Ответы [ 2 ]

5 голосов
/ 28 марта 2010

Старые браузеры не имеют встроенной поддержки JSON. Скорее всего, вам придется включить его вручную.

1 голос
/ 03 марта 2011

Старые браузеры поддерживают JSON, они просто не поддерживают JSON.parse. Для загрузки данных JSON в старых браузерах вы можете просто использовать

var obj = eval('('+jsonStr + ')');
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...