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

时间:2018-02-05 16:14:10

标签: javascript jquery ajax function

我试图编写一个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]();
                            }
                        }
                    );
                }
            );      
        });
    }

根据我的想法,这应该在likeThisPost成功完成两个ajax调用后运行logMeIn,但我得到此错误:

  

window [callBack]不是函数

我称之为成功定义的函数存在,除此之外,它甚至不会尝试调用该函数,但它正在处理{{1作为文字而不是字符串。

我使用jQuery并将所有内容都包装在$中。我哪里错了?

1 个答案:

答案 0 :(得分:0)

感谢Jonas W和Rory McCrossan,答案是将传递的函数更改为函数名称而不是字符串,然后直接调用函数而不是使用window

所以logMeIn(likeThisPost)代替logMeIn("likeThisPost")callBack();而不是window[callBack]();

谢谢!