2010-03-28 3 views
2

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

Сценарий 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.

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

ответ

5

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

1

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

var obj = eval('('+jsonStr + ')'); 
+0

$ Jeff Beaman, я столкнулся с той же проблемой. Он работает с другими браузерами, но не с IE. Я Havet этот кусок кода: $ .ajax ({ \t URL: 'get_cpu.php', успех: функция (данные) { \t \t вар myObj = JSON.parse (данные) Любые идеи, как я мог бы изменить это? Я попробовал ваш мехтод, не повезло. – user1471980