2

div id を配列にプッシュしようとしています。配列プッシュは ajax 呼び出しの前にうまく機能しています。しかし、ajax 成功内でプッシュを使用すると、2 番目の要素をクリックすると最初のプッシュが行われます。

以下のコードの場合の配列操作(配列プッシュ内で成功)

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

                }
            })

        }
    });
});

私は間違っています..または、これはどのように機能するはずですか?? 前もって感謝します

4

2 に答える 2

5

" " で Ajax を構成する必要があります。競合async:false状態があるためです。配列を操作している間はコードをブロックしてください。

この質問を参照してください。

于 2012-09-07T10:49:17.930 に答える
3

あなたが行っているAJAX呼び出しは(定義により...)非同期です。つまり、 $('.custom_checkbox').click で定義している実際の関数は、成功関数が呼び出される前に既に終了しています...次の div (例: div 2) の場合、最初のクリックの成功関数は、まだ呼び出されている場合と呼び出されていない場合があります...

これが問題でしょうか?

于 2012-09-07T09:18:41.083 に答える