我的网络应用程序(运行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()?
答案 0 :(得分:1)
NOOP。 eval(和别名Function构造函数等)旨在完成此操作,将字符串解析为runnable javascript。
如果您不想使用eval
,而不是从服务器返回完整的javascript,您可以返回json响应中的值,指示您的客户端应用程序执行预定义的任务。
我要抄袭@Esailija的评论: 为什么你会在json中有代码?这是一种数据交换格式......
答案 1 :(得分:0)
如果没有eval
或其衍生产品,我认为您无法实现您的目标。
您可以查看jQuery.globalEval()
方法,如下所述:http://api.jquery.com/jQuery.globalEval/
您还可以查看jQuery.getScript()
方法:http://api.jquery.com/jQuery.getScript/
答案 2 :(得分:0)
我会是第一个滔滔不绝的eval == evil
口头禅,但我也是一个现实主义者,有时可以打破规则。
我想你可能在这里有一个。
答案 3 :(得分:0)
您可以尝试将带有代码的字符串附加到DOM,然后在所需元素上触发click事件。