Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/jquery/88.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript JQuery回调到以前定义的函数_Javascript_Jquery - Fatal编程技术网

Javascript JQuery回调到以前定义的函数

Javascript JQuery回调到以前定义的函数,javascript,jquery,Javascript,Jquery,我仍在学习JQuery(并因此学习了一点JavaScript),但我似乎不知道如何在回调中使用先前定义的函数 假设我有: <script> $(document).ready(function() { function ajax_start() { alert("starting..."); } }); </script> $(文档).ready(函数(){ 函数ajax_st

我仍在学习JQuery(并因此学习了一点JavaScript),但我似乎不知道如何在回调中使用先前定义的函数

假设我有:

<script>
$(document).ready(function() {

function ajax_start() {
                      alert("starting...");
                      }

});
</script>

$(文档).ready(函数(){
函数ajax_start(){
警报(“启动…”);
}
});
我希望在另一个功能中使用它,例如:

<script>
$(document).ready(function() {

$.ajax({
        beforeSend: ajax_start(),
        url: "insert_part.php",
        type:"POST",
        data: "customer="+customer
  });
});
</script>

$(文档).ready(函数(){
$.ajax({
发送前:ajax\u start(),
url:“insert_part.php”,
类型:“POST”,
数据:“客户=”+客户
});
});
这是正确的吗?(我假设不是因为它不…)回调的正确方式是什么?

关闭

$(document).ready(function() {
    
    function ajax_start() {
        alert("starting...");
    }

    $.ajax({
        beforeSend: ajax_start, // <== remove the parens
        url: "insert_part.php",
        type:"POST",
        data: "customer="+customer // <== as Skilldrick pointed out,
                                   //     remove the trailing comma as well
    });
});
或者只声明一个完成所需操作的命名函数,然后使用它:

function combined_function(xhr, settings) {
    ajax_start();
    other_function();
}

$.ajax({
    beforeSend: combined_function,
    url: "insert_part.php",
    type:"POST",
    data: "customer="+customer
});

beforeSend
的值更改为
ajax\u start
。换句话说,去掉括号


用括号调用
ajax\u start()
并将
beforeSend
设置为
ajax\u start()
的返回值(在本例中,我认为这将是
未定义的
)。

只需删除括号,然后引用“函数”对象。()调用该函数,以便传递ajax\u start的返回值

$.ajax({
        beforeSend: ajax_start,
        url: "insert_part.php",
        type:"POST",
        data: "customer="+customer,
  });
});

结尾的
可能会在某些浏览器中造成问题。@Skilldrick:错过了(现在还早)。谢谢,修正了。@mattball关于括号的问题,如果我在一些通用脚本中调用函数,例如ajax\u start;和ajax_start();“你的行为会和你提到的一样吗?”Alex区别在于引用和调用。在$.ajax中,您的意思是“在发送之前使用
ajax\u start
函数”。如果你想叫它,你可以用帕伦斯。更像是“我想现在调用
ajax\u start
函数”。您还可以通过编写:beforeSend:function(){alert(“仅在此处使用,短代码”)}来使用“匿名”函数。
$.ajax({
        beforeSend: ajax_start,
        url: "insert_part.php",
        type:"POST",
        data: "customer="+customer,
  });
});