关于javascript中的eval的问题

时间:2008-12-23 10:12:22

标签: javascript

谢谢你。这是正确的问题:

{
    "VID":"60",
    "name":"\u4f1a\u9634",
    "requireLevel":"20",
    "levelMax":"5",
    "venationRequirement":"0",
    "description":"\u6c14\u6d77\u4e0a\u9650\u63d0\u9ad8[Affect1]\u70b9",
    "cost":{"1":"240","2":"360","3":"400","4":"600","5":"720"},
    "difficult":{"1":"1024","2":"973","3":"921","4":"870","5":"819"},
    "affect":{"1":"200","2":"500","3":"900","4":"1400","5":"2000"},
    "descriptions":{
        "1":"\u6c14\u6d77\u4e0a\u9650\u63d0\u9ad8200\u70b9",
        "2":"\u6c14\u6d77\u4e0a\u9650\u63d0\u9ad8500\u70b9",
        "3":"\u6c14\u6d77\u4e0a\u9650\u63d0\u9ad8900\u70b9",
        "4":"\u6c14\u6d77\u4e0a\u9650\u63d0\u9ad81400\u70b9",
        "5":"\u6c14\u6d77\u4e0a\u9650\u63d0\u9ad82000\u70b9"
    }
}

我在php中使用json_encode(),并使用ajax请求获取响应文本。

但是当我使用eval()来解析响应文本时。这是错的。

moonshadow和james gregory在下面的评论中回答了这个问题。再次感谢你。

5 个答案:

答案 0 :(得分:4)

你的第二个错误是因为你正在评估一个哈希值,因为你需要将它重写为:

var s = '{"first": {"a":1}, "second": {"b":2}}';

答案 1 :(得分:3)

Javascript对于什么,在什么上下文中解析它有点困惑。在将字符串传递给eval()之前添加'('并附加')'以强制它将整个事物解析为表达式。

(正如其他人所指出的那样,你所提出的问题也缺少外关联数组的标签,但是你provided的样本数据澄清了实际问题。)

答案 2 :(得分:2)

如果您的第二个示例是尝试使用两个嵌套对象创建对象,那么您将缺少外部对象属性的名称,例如

var s ='{“FirstSubObject”:{“a”:1},“SecondSubObject”:{“b”:2}}';

答案 3 :(得分:0)

[]语法显式用于创建数组,而{}具有完全不同的含义(它认为您正在尝试创建函数/块)

答案 4 :(得分:0)

使用json是一个更好的解决方案。