从另一个函数调用函数不起作用

时间:2015-03-08 14:47:18

标签: javascript jquery

我在网页上有2个函数,函数A应该在页面生成(init)加载,然后每60秒加载一次,或者单击“Button1”并且Ajax Post成功。

这是我到目前为止所做的:

<script src="http://code.jquery.com/jquery-2.0.3.js"></script>
<script>
    $(function A() {
        $.ajax({
            url: "url",
            type: "post",
            datatype: "html",
            data: {var1: "123"}
            },
            complete: function() {
                setTimeout(A, 60000);
            }
        });
    });
    $(document).ready(function() {
        console.log( "ready!" );
        $('#Button1').click(function() {
            $.ajax({
                url: "url",
                type: "post",
                datatype: "html",
                data: {var2: "123"},
                success: function(data){
                    console.log( "Function Successful!" );
                    A();                   //CALL FUNCTION A - NOT WORKING
                },
            }); //End of AJAX
        });
    });
</script>

功能A单独运作完美。

当我点击Button1时,我在控制台中输入了“功能成功”消息,但是没有触发功能A.

如何在单击Button1并且Ajax成功时运行函数A?

2 个答案:

答案 0 :(得分:0)

在相同范围内定义您的功能。目前,您已在另一个范围内定义了函数A

$(document).ready(function() {

    function A() {
        $.ajax({
            url: "url",
            type: "post",
            datatype: "html",
            data: {var1: "123"},
            // remove this},
            complete: function() {
                setTimeout(A, 60000);
            }
        });
    }

    $('#Button1').click(function() {
        $.ajax({
            url: "url",
            type: "post",
            datatype: "html",
            data: {var2: "123"},
            success: function(data){
                console.log( "Function Successful!" );
                A();                   //CALL FUNCTION A
            },
        }); //End of AJAX
    })

});

答案 1 :(得分:0)

要让函数在启动时运行一次,然后再使用它,您可以创建一个匿名函数,它会像这样返回:

var A = (function A() {
  // do the functions stuff
  return A;
})();

如果您想再次运行它,可以使用A()

进行调用
$(document).ready(function() {

  var A = (function A() {
    // stuff here
    return A;
  })();

  $('#Button1').click(function() {
    $.ajax({
      url: "url",
      success: function(data){
        A();                   //CALL FUNCTION A
      }
    });
  })

});