jQuery:Ajax - 如何找到最后一个但只有一个Call

时间:2017-06-23 13:06:07

标签: javascript php jquery mysql ajax

简介:

要将数据插入数据库,我使用的是使用jQuery ajax方法的异步方法,因为这些调用count不知道将发送多少请求,我使用ajaxStop方法来识别调用结束。

问题:

我的需求和问题是:在所有调用结束并将数据插入数据库后,我需要找出那些插入的记录数,所以我试图在ajaxStop()方法中添加一个函数或调用,在所有Ajax调用或完成后实际触发。因为这将在文档内的所有ajax调用之后被触发,当我进行调用时,这将被触发并且一次又一次地变为无限循环。

  1. 我可以通过什么方式获得总记录 异步调用已完成或
  2. 我可以找到最后一个电话,这样我就可以拉出记录了 插入了许多。
  3. 还有其他方法可以达到这个目的。
  4. 我正在使用jQuery Ajax函数,如下所示:

    <script>
    //Declaration of function that will insert data into database
        $.ajaxSetup({
          url: "senddata.php"
        });
    
     function senddata(filename,query,t){
        var file = filename;
        var q = query;
            $.ajax({
                type: "POST",
                data: {file,q,t},
                async: true,
                success: function(html){
                     $( '#responce' ).append( '<li>' + html + '</li>');
                },
                error:function(exception){ alert('Exeption:'+exception); }
            })
            }
    
            $( document ).ajaxStop(function() {
                $.post('senddataQuery.php', { num: 5 }, function(result) { 
                     //alert(result); 
                     $( '#responce' ).append( '<li>' +result+ '</li>');
                });
            });
    </script>
    

    欢迎提出建议和指导。

    提前感谢并感谢。

1 个答案:

答案 0 :(得分:1)

我会做一些事情,比如添加一个全局变量数组,每个成功函数都会推送它的签名:

var ajaxFunctions = [];
var file = filename;
var q = query;
$.ajax({
  type: "POST",
  data: {file, q, t},
  async: true,
  success: function(html) {
    ajaxFunctions.push("Success1");
    $('#responce').append('<li>' + html + '</li>');
  },
  error: function(exception) {
    alert('Exeption:' + exception);
  }
})
}

$(document).ajaxStop(function() {
  $.post('senddataQuery.php', {
    num: 5
  }, function(result) {
    ajaxFunctions.push("Success2");
    //alert(result); 
    $('#responce').append('<li>' + result + '</li>');
  });
});

就这么简单,如果你想得到最后一个被执行的函数,你总能得到:

console.log(ajaxFunctions[ajaxFunctions.length - 1]);