2016-11-09 60 views
-2

我有這樣的數組urls = ['url1','url2','url3'];我該如何跟蹤數組索引,所以每個Ajax調用我可以刪除一個元素。如何在ajax調用期間跟蹤數組索引

這裏是什麼我想

var my_delay = 2000; 
 
var urls = ['url1','url2','url3']; 
 

 

 
$(function() { 
 
    callAjax(); 
 
}); 
 

 

 
function callAjax() { 
 
    /*$.ajax({ 
 
     // my ajax params .............. 
 
     success: function(data){ 
 
     \t \t if(urls.length != 0){ 
 
        console.log('must be called only 3 times'); 
 
     \t \t setTimeout(callAjax, my_delay); 
 
        urls.shift(); 
 
     \t \t } 
 
     } 
 
    }); */ 
 
    console.log('must be called only 3 times'); 
 
    console.log('in real situation i will going to use above commented ajax code'); 
 
if(urls.length != 0){ // stop here but you are not stoppping why? 
 
setTimeout(callAjax, my_delay); 
 
    urls.shift(); 
 
    } // end of if 
 
}
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.0.3/jquery.min.js"></script>

問:我想停止Ajax調用時存在urls[]沒有元素請記住ajax打算請在該場景中撥打php page我也想跟蹤array index

+0

究竟是什麼你想在這裏實現嗎?你是不是想調用相同ajax調用3個單獨的url?爲什麼你不只是遍歷'urls',並在該循環中執行ajax調用? – Cerbrus

+0

我看到你沒有達到你的教程中有關javascript的循環部分 – madalinivascu

+0

@Cerbrus什麼循環,我沒有看到任何循環? – madalinivascu

回答

1

使用全局變量和遞歸函數

var i = 0; 
callAjax(urls[i]); 
function callAjax(url) { 
$.ajax({ 
url:url, 
success:function() { 
if (i< urls.length) 
    i++; 
    callAjax(urls[i]); 
} 
}); 
} 
+0

我認爲我達到了我的解決方案,我會盡快接受 – EaBangalore

+1

非常感謝你 – EaBangalore

+0

很高興有幫助:P – madalinivascu

-2

也許你編輯本:$.when()加入jquery 1.5

http://devdocs.io/jquery/jquery.when

通過這種方式,畢竟阿賈克斯完成後,你會得到array結果保持了之前的軌道。

+0

我的答案有什麼問題嗎? – TomIsion

+0

@Tomlsion,我想跟蹤數組元素只有 – EaBangalore

+0

@EBBangalore說實話,我無法實現你的目標。也許你想發送三個Ajax在一系列網址中?那麼得到相同訂單的迴應? – TomIsion

1

試試吧 $(函數(){

var urls = ['url1','url2','url3'], 

    function callAjax(url) { 
     alert(url); 
    } 

    // for each array element call function callAjax 
    $.each(urls, function(i, url) { 
     callAjax(url); 
    }); 

});