2

私はphpスクリプトからGnuBookTest.js、Bookreaderオブジェクトを開始するjavascriptファイルにjsonでエンコードされた値を渡し、「結果」という名前の変数を介して渡した値を使用しようとしています。

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 ではまったく機能しません。Mobile safari から参照エラー メッセージが表示され続けます: can't find variable: JSON. 他のブラウザーは Bookreader をロードせず、代わりに "x" を表示します。これは、php スクリプトから値を取得しなかったためです。

問題はどこだ?

4

2 に答える 2

5

古いブラウザにはネイティブの JSON サポートがありません。おそらく手動で含める必要があります。

于 2010-03-28T19:02:03.657 に答える
1

古いブラウザは JSON をサポートしていますが、サポートしていないだけですJSON.parse。JSONデータを古いブラウザにロードするには、単純に使用できます

var obj = eval('('+jsonStr + ')');
于 2011-03-02T21:21:07.390 に答える