jquery数组推送在ajax内部无法正常工作成功

jquery数组推送在ajax内部无法正常工作成功,ajax,jquery,array-push,Ajax,Jquery,Array Push,我正在尝试将一个div id推送到一个数组中。在ajax调用之前,数组推送工作得很好。但是当我在ajax成功中使用推送时,第一次推送是在我单击第二个元素时进行的。这就是 数组操作时,使用下面的代码数组推送内部成功 我的代码 $(document).ready(function() { var count = 0; var vPool = ''; arr = []; seat = []; var totalseat = '<?php echo $su

我正在尝试将一个div id推送到一个数组中。在ajax调用之前,数组推送工作得很好。但是当我在ajax成功中使用推送时,第一次推送是在我单击第二个元素时进行的。这就是

数组操作时,使用下面的代码数组推送内部成功 我的代码

$(document).ready(function() {

    var count = 0;
    var vPool = '';
    arr = [];
    seat = [];
    var totalseat = '<?php echo $sumofseat; ?>';
    var date = ' <?php echo $new_date; ?>';
    $('.custom_checkbox').click(function() {
        pressed = true;
        var prev = $(this).attr('class');
        var arrid = $(this).attr('id');
        var seats = $(this).attr('title');
        count = $('.selected').length;
        if (prev == 'custom_checkbox') {

            //arr.push(arrid);
            //seat.push(seats);
            $.ajax({
                url: "seat_manipulation.php",
                dataType: 'json',
                data: '&operation=save&seat=' + arrid + '&guid=<?php echo $guid; ?>&date=' + date,
                type: "POST",
                context: this,
                success: function(data) {

                    if (data.status == 'SAVED') {
                        $(this).toggleClass('selected');
                        $('#count').slideDown();
                        $('#selecte_seat').show();
                        $('#count').html(count + ' Seats selected');
                        alert(arrid);
                        //if(jQuery.inArray(arrid,arr) == -1) {
                        arr.push(arrid);


                        //}
                        //if(jQuery.inArray(seats,seat) == -1) {
                        seat.push(seats);
                        //}
                    } else {
                        alert("Seat already been used.Please select another");
                    }

                }
            })

        }
    });
});

我错了……或者这就是它的工作原理??提前感谢

根据定义,您正在进行的AJAX调用是异步的…,这意味着您在$'中定义的实际函数。custom_复选框。在调用成功函数之前,单击已完成。。。 当您单击下一个div(例如div 2)时,第一次单击的成功功能可能已被调用,也可能尚未调用


这可能是问题所在吗?

您需要使用async:false配置您的Ajax,因为存在竞争条件,所以在操作数组时请阻止代码


请记住这一点。

更相关的信息是您在何处使用该数组?好吧,现在您正在推送之前发出警报,因此当前推送尚未发生是完全有意义的。这正是我所需要的-如果您在success ajax函数之外使用响应,你需要async:false。这对我也适用。我在ajax调用成功方法的作用域之外设置了一个变量,无法将值从内部推送到外部变量。一旦我将其设置为async:false,它就工作了。
$(document).ready(function() {

    var count = 0;
    var vPool = '';
    arr = [];
    seat = [];
    var totalseat = '<?php echo $sumofseat; ?>';
    var date = ' <?php echo $new_date; ?>';
    $('.custom_checkbox').click(function() {
        pressed = true;
        var prev = $(this).attr('class');
        var arrid = $(this).attr('id');
        var seats = $(this).attr('title');
        count = $('.selected').length;
        if (prev == 'custom_checkbox') {

            //arr.push(arrid);
            //seat.push(seats);
            $.ajax({
                url: "seat_manipulation.php",
                dataType: 'json',
                data: '&operation=save&seat=' + arrid + '&guid=<?php echo $guid; ?>&date=' + date,
                type: "POST",
                context: this,
                success: function(data) {

                    if (data.status == 'SAVED') {
                        $(this).toggleClass('selected');
                        $('#count').slideDown();
                        $('#selecte_seat').show();
                        $('#count').html(count + ' Seats selected');
                        alert(arrid);
                        //if(jQuery.inArray(arrid,arr) == -1) {
                        arr.push(arrid);


                        //}
                        //if(jQuery.inArray(seats,seat) == -1) {
                        seat.push(seats);
                        //}
                    } else {
                        alert("Seat already been used.Please select another");
                    }

                }
            })

        }
    });
});