2010-01-27 72 views
1

我使用JQuery对话框,并从PHP我可以建立一些加载项的按钮。为了能够从服务器端添加代码,我按参数传递了一个方法。问题是,萤火告诉我,该方法没有定义:将函数传入参数?

alt text http://clip2net.com/clip/m12122/1264557672-clip-8kb.png

okHandler是这个方法调用的参数,以提高该对话框,它包含一个简单的警报消息的那一刻,后来一些Ajax调用。任何想法为什么它不起作用?

alt text http://clip2net.com/clip/m12122/1264557824-clip-6kb.png

+1

你能否提供一些更多的背景? okHandler在何处定义? – Joel 2010-01-27 02:07:45

回答

4

看起来okHandler是包含函数的声明,并没有实际功能的字符串?你有

okHandler = "function anonymous(){alert('This is a test');}"; 

,而不是

okHandler = function(){alert('This is a test');}; 
0

As John Kugelman notesokHandler似乎是一个字符串。这将更好地工作,如果它是一个功能......然而,如果一个字符串它必须是,那么你就需要通过eval()将它传递给实际执行它:

eval("(" + okHandler + ")()") 
+0

+1它与eval一起工作,但实际上我是从服务器端传递字符串到客户端。我给你+1,但会接受约翰的答案。感谢Shog9 – 2010-01-28 00:20:55

0

是在okHandler()函数加载(作为一个有效的JS对象 - 不是一个字符串)当你得到那个错误?

我相信,如果foo还没有被声明为某个变量,那么调用类似“if(foo!= null)”的东西是不正确的。 FireBug会抱怨:“okHandler没有定义。”

尝试这样的事情...

var myHandlers = {}; 
// Load okHandler as a member of myHandlers when applicable here... 
$('#dialog'+idbox)... 
    "Oky": function() { 
     myHandlers.okHandler && myHandlers.okHandler(); 
     ... 
    } 
}