Чтобы сделать это асинхронно, вам нужно переместить предупреждение в функцию обратного вызова и удалить параметр async
, например:
$.ajax({
type: "POST",
url: "prepXML.php",
data: "method=getartists&user="+userName+"&amount="+amount,
dataType: "xml",
success: function(xml){
$("artist",xml).each(function(i){
artistName[i] = $(this).find("name").text();
artistPlaycount[i] = $(this).find("playcount").text();
});
alert(artistName[2]);
}
});
В противном случае функция success
, заполняющая массив, происходит после предупреждение делает ... так что то, что вы хотите, еще не совсем там.До тех пор, пока запрос не вернется с сервера, обработчик success
не выполнится.
Кроме того, первым параметром для обратного вызова .each()
является индекс, его можно использовать, нетнеобходимо сохранить собственную инкрементную переменную:)