jquery数组推送在ajax内部无法正常工作成功
我正在尝试将一个div id推送到一个数组中。在ajax调用之前,数组推送工作得很好。但是当我在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
$(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");
}
}
})
}
});
});