0

直截了当,我有以下 javascript 和 jquery 代码,它们更新了一些检查的行并在每个数据表行上做一些事情。这是我的代码:

function checkUpdate(){
setInterval(function(){
    var listLength = updateList.length;
    if(listLength > 0){
        for(var r=0; r<listLength; r++){
        //  console.log(r)
            var clID = updateList[r];
        //  console.log(clID)
            var rRow = $('#dataTable tbody tr').find('td[data-clientid="'+clID+'"]').parent('tr');
        //  console.log(rRow)
            var rRowIndex = rRow.index();
        //  console.log(rRowIndex)
            var rRowDataIndex = oTable.fnGetPosition(rRow[0]);
            console.log(rRowDataIndex)
            $.ajax({
                url: '/cgi-bin/if-Clients-list.jpl',
                data: 'session=' + recievedSession + '&clientid=' + clID + '&outputformat=json',
                dataType: 'json',
                success: function(rowData){
        //          console.log(rowData)
                    var newRow = [];
                    var newOrderedRow = [];
            console.log(rRowDataIndex)
                    newRow.push(rRowDataIndex+1, "");
                    for (var title in rowData[0]){
                        newRow.push(rowData[0][title]);
                    }
            console.log(newRow)
                },

            });
        };
    }
},2000)

};

这是问题所在:调用
后,变量未更新或更新但范围和优先级存在问题,如果我检查 2 行或更多行,我无法理解所有的第一个元素将是相同的任何人都可以帮忙我?PS。我也不能在网上展示任何代码 谢谢大家$.ajax()rRowDataIndexconsole.log(newRow)

4

1 回答 1

1

您需要将 AJAX 调用包装在一个闭包中,以rRowDataIndex通过循环捕获每次的值。

function checkUpdate() {
    setInterval(function () {
        var listLength = updateList.length;
        if (listLength > 0) {
            for (var r = 0; r < listLength; r++) {
                //  console.log(r)
                var clID = updateList[r];
                //  console.log(clID)
                var rRow = $('#dataTable tbody tr').find('td[data-clientid="' + clID + '"]').parent('tr');
                //  console.log(rRow)
                var rRowIndex = rRow.index();
                //  console.log(rRowIndex)
                var rRowDataIndex = oTable.fnGetPosition(rRow[0]);
                console.log(rRowDataIndex)
                (function (rRowDataIndex) {
                    $.ajax({
                        url: '/cgi-bin/if-Clients-list.jpl',
                        data: 'session=' + recievedSession + '&clientid=' + clID + '&outputformat=json',
                        dataType: 'json',
                        success: function (rowData) {
                            //          console.log(rowData)
                            var newRow = [];
                            var newOrderedRow = [];
                            console.log(rRowDataIndex)
                            newRow.push(rRowDataIndex + 1, "");
                            for (var title in rowData[0]) {
                                newRow.push(rowData[0][title]);
                            }
                            console.log(newRow)
                        },

                    });
                })(rRowDataIndex);
            };
        }
    }, 2000);
}
于 2013-02-23T13:56:04.553 回答