Javascript 通过字符串调用函数不起作用

Javascript 通过字符串调用函数不起作用,javascript,jquery,ajax,function,Javascript,Jquery,Ajax,Function,我试图编写一个js函数,在完成时触发另一个变量函数。我想我可以通过将第二个函数的名称作为字符串传递来实现这一点,但我无法让它工作。这是我的密码: logMeIn('likeThisPost'); function logMeIn(callBack) { //First function content $.post("/ajaxurl/", { login_id: login_id,

我试图编写一个js函数,在完成时触发另一个变量函数。我想我可以通过将第二个函数的名称作为字符串传递来实现这一点,但我无法让它工作。这是我的密码:

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.-我还必须直接调用它,而不是通过
窗口
(这就是我在每一个教程中都被要求这样做的!)。