为什么这个JSON.parse代码不起作用?

时间:2010-03-28 18:58:04

标签: php javascript json parsing encode

我正在尝试将json编码的值从php脚本传递到GnuBookTest.js,这是一个启动Bookreader对象的javascript文件,并使用我通过名为“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和桌面 - Safari;但在mac-Chrome,mobile-Safari和旧版IE中根本不起作用。移动safari一直给我一个引用错误消息:找不到变量:JSON。其他浏览器只是不加载Bookreader而是显示“x”,就像他们没有从php脚本中获取值一样。

问题出在哪里?

2 个答案:

答案 0 :(得分:5)

较旧的浏览器没有本机JSON支持。您可能需要手动include it

答案 1 :(得分:1)

旧版浏览器支持JSON,但它们不支持JSON.parse。要在旧版浏览器中加载JSON数据,您只需使用

即可
var obj = eval('('+jsonStr + ')');