2010-03-28 166 views
2

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

问题在哪里?

回答

5

旧版浏览器没有本机JSON支持。您可能必须手动输入include it

1

旧的浏览器确实支持JSON,他们只是不支持JSON.parse。要在旧版浏览器中加载JSON数据,您可以简单地使用

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

$ Jeff Beaman,我面临同样的问题。它适用于其他浏览器,但不适用于IE。我havet这段代码:$。阿贾克斯({ \t 网址: 'get_cpu.php', 成功:功能(数据){ \t \t VAR MyObj中= JSON.parse(数据);任何想法如何,我可以修改这个?我尝试了你的mehtod,没有运气。 – user1471980 2013-06-13 19:37:59

相关问题