关于javascript中eval的一个问题

关于javascript中eval的一个问题,javascript,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"

多谢各位。以下是正确的问题:

{
    "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在下面的评论中回答了这个问题。再次感谢。

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

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

您的第二个是错误的,因为您正在计算散列,要使其工作,您需要将其重写为如下内容:

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

您的第二个是错误的,因为您正在评估散列,要使其正常工作,您需要将其重写为如下内容:

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

如果第二个示例是尝试创建包含两个嵌套对象的对象,则缺少外部对象属性的名称,例如


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

如果第二个示例是试图创建一个包含两个嵌套对象的对象,则缺少外部对象属性的名称,例如


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

Javascript对它在什么上下文中进行解析有点困惑。在将字符串传递给eval()之前,在前面加上“(”并附加“)”,以强制它将整个内容解析为表达式


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

Javascript对它在什么上下文中解析的内容有点困惑。在将字符串传递给eval()之前,在前面加上“(”并附加“)”,以强制它将整个内容解析为表达式


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

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

使用json是更好的解决方案