为什么这个JSON.parse代码不起作用?
问题描述:
我试图将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脚本中获取值一样。
问题在哪里?
答
旧的浏览器确实支持JSON,他们只是不支持JSON.parse
。要在旧版浏览器中加载JSON数据,您可以简单地使用
var obj = eval('('+jsonStr + ')');
$ Jeff Beaman,我面临同样的问题。它适用于其他浏览器,但不适用于IE。我havet这段代码:$。阿贾克斯({ \t 网址: 'get_cpu.php', 成功:功能(数据){ \t \t VAR MyObj中= JSON.parse(数据);任何想法如何,我可以修改这个?我尝试了你的mehtod,没有运气。 – user1471980 2013-06-13 19:37:59