0

我的 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]如果 Row(tr) 追加超过 1,则仅显示每个 row(tr) ID 中的最后一个数组值。

例如,如果 Row(tr) 是三 (3)。然后item_ids_array[inc_i] = item_ids_array[2]在每个 tr ID 中仅显示 ' 值。

基本上我需要那个item_ids_array[inc_i]值将显示在每个不同的 tr ID 中。

如何在 tr 中成功获取不同的数组值。请帮我。

4

2 回答 2

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
            }

        });
    }
于 2013-07-01T18:05:48.753 回答
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)    
    });
}
于 2013-07-01T17:58:15.327 回答