2010-03-28 8 views
2

J'essaie de transmettre des valeurs codées json d'un script php vers un fichier javascript GnuBookTest.js qui initie un objet Bookreader et utilise les valeurs que j'ai transmises via la variable "result".Pourquoi ce code JSON.parse ne fonctionne-t-il pas?

Le script php envoie les valeurs telles que:

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

et dans le fichier GnuBookTest.js je suis en train d'utiliser les valeurs comme:

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

En utilisant JSON.parse comme j'ai écrit ci-dessus charge le Bookreader et utilise mes valeurs correctement dans quelques navigateurs web: Firefox, IE8, et desktop-Safari; mais ne fonctionne pas du tout dans mac-Chrome, mobile-Safari, ainsi que les anciennes versions d'IE. Le safari mobile continue à me donner une erreur de référence msg: impossible de trouver la variable: JSON. Les autres navigateurs ne chargent tout simplement pas le Bookreader et affichent le "x" à la place, comme s'ils n'avaient pas obtenu les valeurs du script php.

Où est le problème?

Répondre

5

Les anciens navigateurs ne sont pas pris en charge par JSON natif. Vous aurez probablement à include it manuellement.

1

Les anciens navigateurs prennent en charge JSON, ils ne prennent pas en charge JSON.parse. Pour charger des données JSON dans des navigateurs plus anciens, vous pouvez simplement utiliser

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

$ Jeff Beaman, je suis confronté au même problème. Cela fonctionne sur d'autres navigateurs mais pas IE. Je Havet ce morceau de code: .ajax $ ({ \t url: 'get_cpu.php', succès: function (données) {var \t \t myObj = JSON.parse (données) Toute idée comment je pouvais modifier ceci? J'ai essayé votre méhtod, pas de chance. – user1471980

Questions connexes