【问题标题】:jQuery callback from another function来自另一个函数的 jQuery 回调
【发布时间】:2013-01-17 17:45:54
【问题描述】:

我有一个看起来像这样的函数。它有效。

问题

这个函数myFunction 被许多其他函数调用,并且取决于哪个函数在成功时应该做不同的事情。

问题

这是如何解决的?某种回调?还是我必须发送一个额外的参数才能让函数知道?

代码

function myfunction()
{
    var value = "myvalue";
    var post_url = "ajax.php";

    $.post(  
        post_url,
        {
             value: value,
        },
            function(responseText){  
                var json = JSON.parse(responseText);
                if(json.success)
                {
                    console.log('success'); 
                }
            }
        );
    }
}

【问题讨论】:

    标签: jquery function post callback


    【解决方案1】:

    添加函数参数,成功时调用:

    function myfunction(callback)
    {
        var value = "myvalue";
        var post_url = "ajax.php";
    
        $.post(  
            post_url,
            {
                 value: value,
            },
                function(responseText){  
                    var json = JSON.parse(responseText);
                    if(json.success)
                    {
                        console.log('success'); 
                        //call callback 
                        callback();
    
                    }
                }
            );
        }
    }
    

    【讨论】:

      【解决方案2】:

      myfunction 接受回调:

      function myfunction(callback)
      {
          var value = "myvalue";
          var post_url = "ajax.php";
      
          $.post(post_url, { value: value }, callback);
      }
      

      然后你可以传入任何要在POST返回时执行的函数:

      myfunction(function(responseText){  
          var json = JSON.parse(responseText);
          if (json.success)
          {
              console.log('success'); 
          }
      });
      

      【讨论】:

        【解决方案3】:

        是的,你要么需要一个参数来识别调用者,比如

        function myfunction(caller) {
            if (caller == "Foo") {
                // some code
            }
        }
        
        myFunction("Foo");
        

        或者使用全局变量

        function myFunction() {
            if (caller == "Foo") {
                // some code
            }
        }
        
        caller = "Foo";
        myFunction();
        

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 1970-01-01
          • 2020-08-11
          • 2021-08-05
          • 1970-01-01
          • 1970-01-01
          • 2012-07-19
          • 2016-12-14
          • 1970-01-01
          相关资源
          最近更新 更多