Wenn ich innerhalb einer Schleife jQuery.ajax()
aufrufen, würde es dazu führen, dass der Aufruf in aktueller Iteration den letzten Aufruf überschreibt oder ein neues XHR-Objekt für die neue Anforderung zugewiesen wird?jQuery.ajax() innerhalb einer Schleife
Ich habe eine Schleife, die dies tun, während aus dem Konsolenprotokoll kann ich Anfragen 200 ok
erledigt sehen, aber nur die Ergebnisdaten der letzten Anfrage in der Schleife wird von der Anfrage success callback
wie angenommen gespeichert.
der Code:
var Ajax = {
pages: {},
current_request: null,
prefetch: function() {
currentPath = location.pathname.substr(1);
if(this.pages[currentPath])
{
var current = this.pages[currentPath];
delete this.pages[currentPath];
current['name']=currentPath;
current['title']=$("title").text().replace(' - '.SITE_NAME, '');
current['meta_description']=$("meta[name=description]").attr('content');
current['meta_keywords']=$("meta[name=keywords]").attr('content');
}
var _Ajax = this;
//the loop in question *****
for(var key in this.pages)
{
$.ajax({
method: 'get',
url:'http://'+location.hostname+'/'+key,
success: function(data) {
_Ajax.pages[key] = data;
}
});
console.debug(this.pages);
}
if(current)
{
this.pages[currentPath] = current;
}
}
};//Ajax Obj
for(var i in pages)
{
Ajax.pages[pages[i]]={};
}
$(function() {
Ajax.prefetch();
});//doc ready
Mehrere AJAX-Aufrufe werden entsprechend behandelt. Wenn Sie jedoch Werte einer außerhalb des Bereichs des Rückrufs definierten Variablen zuweisen, wird diese möglicherweise überschrieben. Möchten Sie Code schreiben? –
Ajax in einer regulären Schleife ist immer gefährlich, weil Ajax asynchron ist. Können wir etwas Code sehen? – musicnothing