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

任何人都知道吗?为什么eval在这里失败?

+2

你的外壳让每个人都感到困惑。 – SLaks 2010-11-29 15:14:00

回答

14

你必须把它包装()触发表达式求值,如:

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

You can test it out here


虽然一个较好的方法是本地JSON处理:

var result = JSON.parse(response); 

就包括json2.js对旧版浏览器(IE8 <)的支持,呼叫是一样的......它只是增加了全球JSON对象如果它丢失。

+0

哦,是的!你救了我的屁股!这正是我正在寻找.. :) – Dennis 2012-12-17 03:15:55

4

您需要将JSON字符串包装在括号内。

否则,{ ... }被解释为可执行语句块,事实并非如此。

通过将它括在圆括号中,您可以强制解释器将其解释为表达式。