Neden bu JSON.parse kod çalışmıyor?

2 Cevap php

Ben bir Bookreader nesnesi başlatır javascript dosyası, GnuBookTest.js, bir php komut json kodlanmış değerleri geçirmek ve i "sonuç" adlı değişkeni üzerinden geçmişti değerleri kullanmaya çalışıyorum.

Php komut dosyası gibi değerleri gönderiyor:

<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>

ve GnuBookTest.js dosyasında i gibi değerleri kullanmaya çalışıyorum:

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;
.
.
.

Ben yukarıda da yazdığım gibi JSON.parse kullanarak BookReader yükler ve birkaç web tarayıcılarda düzgün benim değerleri kullanır: Firefox, IE8, Safari ve masaüstü; ama mac-Chrome, mobil Safari, artı IE'nin eski sürümlerinde de hiç çalışmıyor. Mobil safari Bana bir başvuru hata msg veren tutar: JSON: değişken bulamıyorum. Diğer tarayıcılarda sadece BookReader yük yoktur ve onlar php script değerleri alamadım gibi, bunun yerine "x" göstermektedir.

Nerede sorun?

2 Cevap

Eski tarayıcılar yerel JSON desteği yok. Büyük olasılıkla include it elle gerekecek.

Eski tarayıcılar, JSON destek yok onlar sadece desteklemez JSON.parse. Sadece kullanabileceğiniz eski tarayıcılarda JSON veri yüklemek için

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