局部变量和jQuery.globalEval

时间:2012-06-24 18:05:36

标签: jquery eval param

在我的Rails 3中,ajax脚手架我在ajax上有一个钩子:success,它接受在调用实体的数据加载属性中定义的任何代码(a,form等),并使用jQuery.globalEval执行它。我想访问钩子中的局部变量,例如返回的数据,但是如果我使用...

alert( data )

...在加载的参数中,它给了我一个未引用的变量错误,即使该参数在钩子参数中。

知道如何在不改变脚手架的情况下使用数据变量吗?改变脚手架并不难,但不必去做!

我正在谈论的最简单的一个例子:

function testMe( data )
{
    jQuery.globalEval( 'alert( data );' );
}

此代码告诉我数据未定义,如何将数据传递给globalEval是我的问题。

1 个答案:

答案 0 :(得分:1)

globalEval全局评估代码,因此忽略了范围。由于数据是testMe中的变量,而不是全局范围,因此它实际上是未定义的。你可以这样做:

var testMeData;
function testMe( data )
{
   testMeData = data
   jQuery.globalEval( 'alert( testMeData );' );
}

这将输出你想要的。但我不明白你为什么要这样做。