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

时间:2012-09-07 09:00:27

标签: ajax jquery array-push

我正在尝试将一个div id推入一个数组.Array push工作得很好bofore ajax call.But当我在ajax成功使用push时,当我点击第二个元素时,首先发生推送。这是

使用以下代码(数组内部成功推送)时的

数组操作
first click on id="1"  --- resuting array []
second click on id="2"  --- resulting array [1]
second click on id="3"  --- resulting array [1,2]

我的代码

$(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");
                    }

                }
            })

        }
    });
});

我错了..或者这就是它的工作方式?提前致谢

2 个答案:

答案 0 :(得分:5)

您需要使用“async:false”配置Ajax,因为存在Race Condition事件,因此在操作Array时会阻塞代码。

请注意question

答案 1 :(得分:3)

您正在进行的AJAX调用是异步的(根据定义......),这意味着您在$('。custom_checkbox')中定义的实际函数。在调用成功函数之前,click已经完成... 当你点击下一个div(例如div 2)时,第一次点击的成功功能可能已经或者可能没有被调用...

这可能是问题吗?