2010-03-28 157 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

相關問題