以下のコードに問題があります。
jQuery.each は、JSON 要求が完了するのを待たずに高速化しています。その結果、'thisVariationID' および 'thisOrderID' 変数は、低速な getJSON 関数で使用できるようになる前に、ループの最新の反復によってリセットされます。
次の反復に進む前に、getJSON リクエストとコールバック関数が完了するまで .each の各反復を待機させる方法はありますか?
$.each($('.checkStatus'), function(){
thisVariationID = $(this).attr('data-id');
thisOrderID = $(this).attr('id');
$.getJSON(jsonURL+'?orderID='+thisOrderID+'&variationID='+thisVariationID+'&callback=?', function(data){
if (data.response = 'success'){
//show the tick. allow the booking to go through
$('#loadingSML'+thisVariationID).hide();
$('#tick'+thisVariationID).show();
}else{
//show the cross. Do not allow the booking to be made
$('#loadingSML'+thisVariationID).hide();
$('#cross'+thisVariationID).hide();
$('#unableToReserveError').slideDown();
//disable the form
$('#OrderForm_OrderForm input').attr('disabled','disabled');
}
})
})