在jQuery中eval()的等价物是什么?

时间:2009-02-26 20:52:21

标签: jquery

在jQuery中调用eval('('+responseText+')')等同于什么?我也明白eval并不安全,所以我在jQuery中寻找更安全,更惯用的东西。

5 个答案:

答案 0 :(得分:6)

您是否真的想要执行Javascript代码(在某种程度上总是不安全),或者您是否尝试将JSON从字符串解析为对象?

如果是前者,eval()仍然是你最好的选择。

如果是后者,jQuery将do it for you作为AJAX请求的一部分,或者您可以使用专用的JSON plug-in来转换字符串和对象,而不会有执行任意代码的风险。

答案 1 :(得分:4)

a)加载并执行JS代码:

$.getScript( url, [ success(data, textStatus) ] )

请参阅http://api.jquery.com/jQuery.getScript/

b)解析JSON:

$.parseJSON( json )

请参阅http://api.jquery.com/jQuery.parseJSON/

答案 2 :(得分:2)

我不认为没有浏览器差异。我今天刚跑过一个。如果您在一个不存在的对象上调用一个调用方法的字符串,则Firefox返回undefined,IE6会抛出一个TypeError。

答案 3 :(得分:1)

通过设计,jQuery着手改进浏览器实现。由于不同浏览器实现eval的方式没有问题,因此jQuery无法解决这个问题。

答案 4 :(得分:0)

$.globalEval()

http://api.jquery.com/jQuery.globalEval/

文档说它的行为与eval()完全不同,但如果您想通过jQuery传递 evals ,则它是最接近的匹配。