1

我的 Web 应用程序(运行 jQuery)从服务器获取以下 JSON 响应:

{
    "script_0": "$('#objview_0_306').on('click', function(e){ getObjectResponse(96089, '306', 'display'); e.preventDefault();});",    
    "verb_0": "display",
    "obid_0": "0_306",
    "body_0": "<div id=\"objview_0_306\"></div>",
    "icon_0": "icons/caseman16.png",
    "close_0": "previousTab();",
    "title_0": "Cases",
    "cmdCount": "1"
}

script_0 元素包含必须运行的脚本,在这种情况下,将 onClick 事件添加到 DOM 元素。

目前,我使用 eval() 来运行脚本,因为它们以字符串形式返回。有没有办法避免使用 eval()?

4

4 回答 4

1

诺普。eval(和别名 Function 构造函数等)旨在完成此任务,将字符串解析为可运行的 javascript。

如果您不想使用eval,而不是从服务器返回完整的 javascript,您可以在 json 响应中返回值,指示您的客户端应用程序执行预定义的任务。

我要抄袭@Esailija 的评论:你到底为什么会有json 代码?这是一种数据交换格式...

于 2012-08-01T10:47:01.590 回答
0

eval我认为如果没有它的衍生物或其衍生物之一,你就无法实现你想要的。

您可以查看jQuery.globalEval()方法,如下所述:http: //api.jquery.com/jQuery.globalEval/

你也可以看看这个jQuery.getScript()方法:http ://api.jquery.com/jQuery.getScript/

于 2012-08-01T10:46:05.543 回答
0

我会第一个说出通常的eval == evil口头禅,但我也是一个现实主义者,有时会打破规则。

我会说你可能在这里有一个。

于 2012-08-01T10:46:27.093 回答
0

您可以尝试将该字符串与代码附加到 DOM,然后在所需元素上触发 click 事件。

于 2012-08-01T10:47:07.370 回答