結果があれば配列をループしたいので、この結果をjavascript配列にプッシュして、各ループとajax呼び出しから取り出します。どうですか?jQueryの各ループとjQueryのajax呼び出しの配列へのプッシュ
私はこれを好きにしようとした:
var ides = ["2254365", "2255017", "2254288", "2220745", "2254452", "2255239", "2232426", "2255143", "2248513", "2254295", "2233629", "2238651", "2254901", "2238430", "2239471", "2255294", "2217888", "2242302", "2242310", "2220380", "56121236", "2255244", "2235716", "2246897"];
var iArray = [];
$.each(ides, function(index, woide) {
$.ajax({
url: "http://query.yahooapis.com/v1/public/yql?q=select%20*%20from%20weather.forecast%20where%20woeid%20=%20" + woide + "&format=json",
dataType: 'json',
success: function(data) {
if (data.query.results != null) {
iArray.push(woide+': '+data.query.results.channel.item.condition.code);
}
}
})
})
console.log(iArray); //this don't work
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
これは、各ループの終了直後に実行されるためです。それは、ajaxコールの完了を待つことはありません。 – Jai
AJAXは非同期呼び出しであるため、成功/エラーコールバック以外でコードを実行すると、まだ終了していない可能性があります。 –