在jQuery中调用eval('('+responseText+')')
等同于什么?我也明白eval
并不安全,所以我在jQuery中寻找更安全,更惯用的东西。
答案 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 )
答案 2 :(得分:2)
我不认为没有浏览器差异。我今天刚跑过一个。如果您在一个不存在的对象上调用一个调用方法的字符串,则Firefox返回undefined,IE6会抛出一个TypeError。
答案 3 :(得分:1)
通过设计,jQuery着手改进浏览器实现。由于不同浏览器实现eval
的方式没有问题,因此jQuery无法解决这个问题。
答案 4 :(得分:0)
$.globalEval()
?
http://api.jquery.com/jQuery.globalEval/
文档说它的行为与eval()
完全不同,但如果您想通过jQuery传递 evals ,则它是最接近的匹配。