2016-11-09 7 views
-2

Ich habe Array wie dieses urls = ['url1','url2','url3']; Wie kann ich Array-Index so verfolgen, dass auf jedem Ajax Aufruf ich ein Element löschen kann.Wie man den Array-Index während des Ajax-Aufrufs verfolgt

hier ist etwas, was ich bin

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>

Frage versuchen: Ich möchte die Ajax-Aufruf zu stoppen, wenn es in urls[] bitte beachten Sie kein Element ist ajax wird sich call php page in diesem Szenario auch ich möchte auf dem Laufenden bleiben array index

+0

Was genau sind Sie hier zu erreichen versuchen? Versuchen Sie, das gleiche zu nennen Ajax Aufruf für 3 separate URLs? Warum nicht einfach über "URLs" Schleife, und führen Sie einen Ajax-Aufruf in dieser Schleife? – Cerbrus

+0

Ich sehe Sie nicht den Looping-Teil in Ihren Tutorials über Javascript – madalinivascu

+0

@Cerbrus welche Schleife erreicht, Ich sehe keine Schleife? – madalinivascu

Antwort

1

Verwenden Sie eine globale Variable und eine rekursive Funktion

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

ich denke, ich habe meine lösung erreicht ich werde es bald annehmen – EaBangalore

+1

vielen dank – EaBangalore

+0

froh, geholfen zu haben: P – madalinivascu

-2

Vielleicht du ne diese ed: $.when() hinzugefügt in jquery 1,5

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

Damit schließlich die Ajax fertig sind, werden Sie array Ergebnis hielt die Spur der vor erhalten.

+0

Alles falsch mit meiner Antwort? – TomIsion

+0

@Tomlsion, ich möchte nur auf Array-Element verfolgen – EaBangalore

+0

@EaBangalore Um Ihnen die Wahrheit zu sagen, kann ich Ihr Ziel nicht erreichen. Vielleicht möchten Sie drei Ajax in einer Reihe von URLs senden? dann erhalten Sie die Antwort der gleichen Reihenfolge? – TomIsion

1

Probieren Sie es $ (function() {

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

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

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

}); 
Verwandte Themen