2011-08-22 58 views
4

我有这样的代码:的ReferenceError:找不到变量错误

$(document).ready(function(){ 
    var callPage = function(){ 
     $.post('/pageToCall.php'); 
    }; 

    setInterval('callPage()', 60000); 
}); 

,它给我的错误ReferenceError: Can't find variable: callPage。为什么?

+0

你callpage期望。函数返回没有它看起来! – zod

+1

@zod:callPage的返回值(或缺少)是无关紧要的。正如Bryan所建议的那样,相关的可能是setInterval的第一个参数的类型。 –

回答

9

尝试setInterval(callPage, 60000);

如果将字符串传递给setInterval,则该字符串将在全局范围中进行评估。问题是callPage本地ready的回调,它不是全局的。

几乎没有任何理由将字符串传递给setIntervalsetTimeout)。总是传递一个函数(以避免这种错误)。

+0

是啊...你正在传递一个函数的引用。不是字符串。 –

+0

@Darhazer:这是没有必要让社区维基... –

+0

@Felix克林我拒绝从你的回答赢得声誉分,其实我想投给你的解释:) –

1

我怀疑这是因为callPage是一个变量作用域为你创建的的document.ready事件的匿名函数。如果您将callPage定义移出该外部,它是否工作?

1
function callPage() 
{ 
    $.post('/pageToCall.php'); 
}; 

$(document).ready(function() 
{ 
    setInterval('callPage()', 60000); 
}); 

这是因为callPage的范围是匿名函数

相关问题