Javascript回调 - 将变量传递给它们

时间:2016-10-21 14:30:48

标签: javascript callback

我无法获得以下代码。假设ajax调用有效,并且msg ['用户名']被预设为' john'。 我想我对如何将变量传递给我的回调感到困惑。 编辑:我认为我的主要困惑是如何获得' msg' Ajax中的变量。看起来像阿贾克斯有一个“硬连线”#39;如果您想随后使用来自ajax查询的数据,则必须使用成功方法,并且该方法是唯一可以访问ajax调用结果的方法。 这是代码:

<script>
   $(document).ready(function(){
        function freedome(horace){
           $.ajax({
               url: "RESPONDERdetails.php",
               type: "GET",           
               dataType: "json",
               data:{thing:31}
           });    
           horace(msg);
        } 

        function callbacker(msg){
            alert("I am callback");
            name = msg["username"];
            alert(name);
        }

        freedome(callbacker(msg));
        });
</script> 

1 个答案:

答案 0 :(得分:1)

您只想使用freedome(callbacker);。在JavaScript中,函数可以像变量一样对待。所以,我们需要做的就是将函数本身作为参数传递。

这会使horace成为一个函数,因此当您执行horace(msg);时,将callbacker作为参数调用msg

此外,msg永远不会在您的示例中的任何位置声明,而horace(msg);将在 AJAX调用完成之前运行。你需要在这里使用AJAX调用的回调。

$(document).ready(function(){
    function freedome(horace){
        $.ajax({
            url: "RESPONDERdetails.php",
            type: "GET",           
            dataType: "json",
            data:{thing:31},
            success: function(msg){
                horace(msg);
            }
        });
    } 

    function callbacker(msg){
        alert("I am callback");
        name = msg["username"];
        alert(name);
    }

    freedome(callbacker);
});