ループは関数呼び出しfor
によってブロックされません。$.post
したがって、POST要求が完了していなくても、変更i
をdm
続けてください。
コードのウォークスルー:
i === 0
Set `mypost` variable to `http://mysite/TotalDailyRes0.xml`
Set `dm` variable to `#DoM0`
Make POST request to `mypost`
Loop
Increment i
i === 1
Set `mypost` variable to `http://mysite/TotalDailyRes1.xml`
Set `dm` variable to `#DoM1`
Make POST request to `mypost`
Loop
....
Increment i
i === 30
Set `mypost` variable to `http://mysite/TotalDailyRes30.xml`
Set `dm` variable to `#DoM30`
Make POST request to `mypost`
END LOOP
....
POST http://mysite/TotalDailyRes0.xml completes
Fire `function(data)` callback
dm === '#Dom30'
POST http://mysite/TotalDailyRes1.xml completes
Fire `function(data)` callback
dm === '#Dom30'
....
POST http://mysite/TotalDailyRes30.xml completes
Fire `function(data)` callback
dm === '#Dom30'
さらに、POSTリクエストが順番に完了する保証はありません。のリクエストhttp://mysite/TotalDailyRes28.xml
は、完了する前に完了する可能性http://mysite/TotalDailyRes30.xml
があります。
解決策は、完成したURLを検出し、それを使用してHTMLIDを作成することです。また、GETリクエストはサーバー上のデータを変更しないため、このコンテキストではより適切です。
$.get(mypost, function(data) {
var i = parseInt(this.url.replace('http://mysite/TotalDailyRes', ''), 10),
dm = '#DoM' + i;
$(data).find('opensearch\\:totalResults').each(function() {
var res = $(this).text();
$(dm).append('<td>' + res + '</td>');
});
} , 'text');