我的Ajax代码在
之下var stack = new Array();
var item_ids_array = new Array();
var inc_i;
var f=0;
for(inc_i =0; inc_i <item_array_length; inc_i++)
{
stack[f] = item_ids_array[inc_i];
f=f+1;
$.ajax({
type: "POST",
url: "<?php echo base_url(); ?>index.php/items/get_item_ids_info/"+item_ids_array[inc_i],
cache: false,
success: function(data){
$('<tr class="field" id="row'+item_ids_array[inc_i]+'">'+data+'</tr>').fadeIn('slow').appendTo('#sortable_table');
}
});
}
在Success中,item_ids_array[inc_i]
正在显示每行(tr)ID中的最后一个数组值,如果Row(tr)的追加值超过1。
例如,如果Row(tr)是三(3)。然后在每个tr ID中仅显示item_ids_array[inc_i] = item_ids_array[2]
的值。
基本上我需要item_ids_array[inc_i]
的值显示在每个不同的tr ID中。
如何在tr中获得不同的数组值。 请帮帮我。
答案 0 :(得分:1)
问题在于您的AJAX回调,它们都使用相同的inc_i
变量。在循环之后,它将是最终值。
您需要添加另一个闭包来“捕获”每个回调的inc_i
值。
var stack = new Array();
var item_ids_array = new Array();
var inc_i;
var f=0;
function createCallback(i){
return function(data){
$('<tr class="field" id="row'+item_ids_array[i]+'">'+data+'</tr>').fadeIn('slow').appendTo('#sortable_table');
};
}
for(inc_i =0; inc_i <item_array_length; inc_i++){
stack[f] = item_ids_array[inc_i];
f=f+1;
$.ajax({
type: "POST",
url: "<?php echo base_url(); ?>index.php/items/get_item_ids_info/"+item_ids_array[inc_i],
cache: false,
success: createCallback(inc+i)
});
}
答案 1 :(得分:1)
不要求循环中的ajax因为ajax超时而导致多个请求丢失。并且可能是你可以通过使用递归函数来解决这个问题,当ajax请求成功时发送另一个请求。可能这可能是可以帮到你
var f=0;
inc_i = 0;
var item_ids_array = new Array();
var stack = new Array();
function Y_fn(inc_i,f) {
stack[f] = item_ids_array[inc_i];
f=f+1;
$.ajax({
type: "POST",
url: "<?php echo base_url(); ?>index.php/items/get_item_ids_info/"+item_ids_array[inc_i],
cache: false,
success: function(data){
$('<tr class="field" id="row'+item_ids_array[inc_i]+'">'+data+'</tr>').fadeIn('slow').appendTo('#sortable_table');
inc_i +=1;
Y_fn(inc_i,f); // recursive function
}
});
}