2010-11-29 8 views
1
0001: response 
$[0] = [string] "{\"code\":200,\"id\":121}" 
0001: eval(response) 
SyntaxError: invalid label 

Quelqu'un sait?Pourquoi eval échoue ici?

+2

Votre shell déroute tout le monde. – SLaks

Répondre

14

Vous avez l'envelopper dans () pour déclencher l'évaluation d'expression, comme ceci:

eval("(" + response + ")") 

You can test it out here.


Bien qu'une meilleure méthode est la manipulation JSON native:

var result = JSON.parse(response); 

Il suffit d'inclure json2.js pour le navigateur plus ancien (< IE8) support, l'appel est le même ... il ajoute juste l'objet JSON global si c'est manquant.

+0

Oh ouais! Tu as sauvé mes fesses !! C'était exactement ce que je cherchais .. :) – Dennis

+0

Merci mon pote, eval a travaillé mais en quelque sorte JSON.parse a échoué – ta4ka

4

Vous devez placer la chaîne JSON entre parenthèses.

Sinon, le { ... } est interprété comme un bloc d'instructions exécutables, ce qui n'est pas le cas. En l'entourant entre parenthèses, vous forcez l'interprète à l'interpréter comme une expression.

Questions connexes