Javascript 通过字符串调用函数不起作用
我试图编写一个js函数,在完成时触发另一个变量函数。我想我可以通过将第二个函数的名称作为字符串传递来实现这一点,但我无法让它工作。这是我的密码:Javascript 通过字符串调用函数不起作用,javascript,jquery,ajax,function,Javascript,Jquery,Ajax,Function,我试图编写一个js函数,在完成时触发另一个变量函数。我想我可以通过将第二个函数的名称作为字符串传递来实现这一点,但我无法让它工作。这是我的密码: logMeIn('likeThisPost'); function logMeIn(callBack) { //First function content $.post("/ajaxurl/", { login_id: login_id,
logMeIn('likeThisPost');
function logMeIn(callBack) {
//First function content
$.post("/ajaxurl/",
{
login_id: login_id,
intent: 'login'
},
function(){
console.log('Logged in, refreshing header');
$.post("/secondajaxurl/",{},
function(data){
//success
if(typeof callBack!=='undefined') {
window[callBack]();
}
}
);
}
);
});
}
根据我的想法,在成功完成logMeIn
中的两个ajax调用后,应该像ispost一样运行,但是我得到了以下错误:
窗口[回调]不是函数
我在success上调用的函数确实存在,除此之外,它看起来甚至没有试图调用该函数,但它将回调
视为文本而不是字符串
我正在使用jQuery并将所有内容包装在$中。我哪里出错了?多亏了Jonas W和Rory McCrossan,答案是将传递的函数更改为函数名,而不是字符串,然后直接调用函数,而不是使用窗口
因此logMeIn(likeThisPost)
而不是logMeIn(“likeThisPost”)
和callBack()代码>而不是窗口[回调]()代码>
谢谢 我正在使用jQuery,并将所有内容包装在一个$
中,这听起来像是您的问题。要使window[callback]()
工作,需要在全局范围内声明callback
中命名的函数,而不是在jquery document.ready处理程序下声明。实际上传递函数引用比从窗口
引用拼凑函数名更有意义。logMeIn(likeThisPost)
也许吧?你在哪里声明了函数likeThisPost()
?如果您在根上声明函数,而不是在任何函数(如$(document))中声明函数,那么(我认为)这应该是可行的。ready(function(){
我相信您在窗口范围之外创建了likeThisPost
函数。@JonasW.-我还必须直接调用它,而不是通过窗口
(这就是我在每一个教程中都被要求这样做的!)。