Php Jquery中的每个函数都不符合顺序
为什么在使用每个循环时,返回值的顺序不同 我有一个php代码Php Jquery中的每个函数都不符合顺序,php,jquery,ajax,Php,Jquery,Ajax,为什么在使用每个循环时,返回值的顺序不同 我有一个php代码 $selectedYear = 2018; $months = array ( 0 => 'January', 1 => 'February', ... 11 => 'December' ); 现在,foreach$months我想创建具有不同值的新行()。 我正在使用AJAX来实现它,比如: var selectedYea
$selectedYear = 2018;
$months = array (
0 => 'January',
1 => 'February',
...
11 => 'December'
);
现在,foreach$months
我想创建具有不同值的新行(
)。
我正在使用AJAX来实现它,比如:
var selectedYear = <?= json_encode( $selectedYear ) ?>;
var month= <?= json_encode( $months); ?>;
$(month).each(function(k)
{
$.ajax({
type : 'POST',
url : 'scripts/ajax-monthTr.php',
data : {month: k, selectedYear: selectedYear},
beforeSend: function()
{
$('.preloader').css('display', 'block');
},
success : function(data)
{
$('#newTr').append(data);
$('.preloader').css('display', 'none');
}
}); // end ajax
});
或
for(变量i=0;i
这是因为每个ajax调用的结果以不同的间隔返回数据。你可以:
1) 或者在调用ajax函数之前追加数据
2) 或者,在每个ajax函数中添加新行后,根据id属性对tr元素进行排序
var items = $('#newTr tr');
items.sort(function(a, b){
return $(a).attr('id') - $(b).attr('id');
});
items.appendTo('#newTr');
这是因为每个ajax调用的结果以不同的间隔返回数据。你可以: 1) 或者在调用ajax函数之前追加数据 2) 或者,在每个ajax函数中添加新行后,根据id属性对tr元素进行排序
var items = $('#newTr tr');
items.sort(function(a, b){
return $(a).attr('id') - $(b).attr('id');
});
items.appendTo('#newTr');
您正在执行一个从月份i获取数据的请求,而无需等待从请求获取月份i-1的响应。假设您发出从第1个月获取数据的请求,那么您不必等待对此请求的响应,而且您还发出了第2个月的请求,也许第2个月的响应可以在第1个月的响应之前到达。还可以看看这项技术:您正在执行一个请求以从月份i获取数据,而无需等待请求的响应以获取月份i-1。假设您发出从第1个月获取数据的请求,那么您不必等待对此请求的响应,而且您还发出了第2个月的请求,也许第2个月的响应可以在第1个月的响应之前到达。还可以看看这种技术:看起来您希望AJAX调用具有同步行为。您的代码正在使用回调函数,因此
success : function(data)
{
$('#newTr').append(data);
$('.preloader').css('display', 'none');
}
将在每次发布后触发。这些邮寄电话的到达顺序不取决于您。在所有网络调用完成后,您应该重新考虑执行循环。看起来您希望AJAX调用具有同步行为。您的代码正在使用回调函数,因此
success : function(data)
{
$('#newTr').append(data);
$('.preloader').css('display', 'none');
}
将在每次发布后触发。这些邮寄电话的到达顺序不取决于您。在完成所有网络调用后,您应该重新考虑执行循环。您是否尝试过:
$(月)。每个(函数(键,值){//code})
问题不是每个的问题,而是ajax
调用的问题。因为它们是异步的,所以不会保留顺序。您是否尝试过:$(月)。each(函数(键,值){//code})
问题不是每个的问题,而是ajax
调用的问题。因为它们是异步的,所以不会保留顺序。
success : function(data)
{
$('#newTr').append(data);
$('.preloader').css('display', 'none');
}