我試圖做一個遞歸函數來使用jQuery和ajax刪除文件來顯示進程的狀態。問題是,第一次執行函數(索引0)時,一切正常,「輸出」爲「1594.jpg」。但是,當索引增加到1時,它是鏈filesToDelete的第二個字符,'5',然後是'9',依此類推。使用數組的遞歸JavaScript函數不起作用
filesToDelete = new Array();
filesToDelete = '1594.jpg,my.png,test.ogg,Song.mp3,Apple_4S.mov,An App.exe';
filesToDelete = filesToDelete.split(',');
function ajaxDelete(itemList, cpt) {
var tempItemList = itemList;
//If cpt is not initialized, initialize it, make sure it's an integer
if(isNaN(cpt)) cpt = 0*1;
//If cpt is equal to the array, exit
if(cpt >= itemList.length) return;
//Current index
var curIndex = cpt;
//The value of the current index
var current = itemList[curIndex];
//DEBUG
console.log('cpt:'+cpt+' index:'+curIndex+' Value:'+itemList[curIndex]);
$.ajax({
url: "deleteFile.php?id="+current,
beforeSend: function(){
progressText('Suppression de '+current);
},
success: function(data){
progressText('Suppression...');
//Index + 1
cpt++;
//RECURTION
setTimeout("ajaxDelete('"+itemList+"', "+cpt+")",1);
}
});
}
任何幫助表示歡迎,並提供瞭解釋如果可能的話..
謝謝!
你是如何調用'ajaxDelete()'和'filesToDelete'? –
直接在服務器上完成這樣做會不會更好? – deceze
@deceze:不,因爲我想爲用戶和事件提供反饋,如果我在php中使用flush(*),AJAX仍然等待完整頁面被加載,然後返回結果。 –