我正在尝试将一个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");
}
}
})
}
});
});
我错了..或者这就是它的工作方式?提前致谢
答案 0 :(得分:5)
您需要使用“async:false
”配置Ajax,因为存在Race Condition事件,因此在操作Array时会阻塞代码。
请注意question。
答案 1 :(得分:3)
您正在进行的AJAX调用是异步的(根据定义......),这意味着您在$('。custom_checkbox')中定义的实际函数。在调用成功函数之前,click已经完成... 当你点击下一个div(例如div 2)时,第一次点击的成功功能可能已经或者可能没有被调用...
这可能是问题吗?