Толчок массива jquery не работает должным образом внутри успеха ajax
Я пытаюсь вставить идентификатор div в массив. Массив push работает хорошо до вызова ajax. Но когда я использую push внутри ajax success, первое нажатие происходит, когда я нажимаю на второй элемент.
операция с массивом, когда с кодом ниже (толчок массива в успех
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 ответа
Вам нужно настроить Ajax на "async:false
msgstr ", потому что есть вещь Race Condition, поэтому блокируйте код, пока вы манипулируете массивом.
Смотри этот вопрос.
Вызов AJAX, который вы делаете, является асинхронным (по определению...), что означает, что фактическая функция, которую вы определяете в $('. Custom_checkbox'). Click уже завершена, прежде чем вызывается функция success... Когда вы нажимаете на следующий div (например, div 2), тогда функция успеха первого клика может быть вызвана, а может и нет...
Может ли это быть проблемой?