データテーブルの各行に対してページ メソッドを呼び出したいコードがあります。各行にはユーザー情報が含まれており、page メソッドは特定の期間におけるそのユーザーに関する追加データを探します。そのようなデータが存在する場合、アイデアは、データを新しい行として現在の行に追加することです。そのようなデータが存在しない場合は、次の行に進みます。
コードを次のように開始します。
$.when(GetStartDate(), GetEndDate())
.then(function () {
GetSchedules();
})
.fail(function () {
failureAlertMsg();
})
まず、ページ メソッドを使用して開始日と終了日を取得します。これはうまくいきます。次に、テーブル内の各データ行に対してメソッドを呼び出そうとします。
function GetSchedules() {
$('.DataRow').each(function () {
GetUserSchedule($(this));
});
}
これは問題なく動作します。現在のデータ行を次の新しい関数に渡します。
var currDataRow;
var currUserID;
function GetUserSchedule(dr) {
currDataRow = dr;
currUserID = currDataRow.find('td').eq(0).text().trim();
$.ajax({
type: "POST",
url: "mypagewithjqueryurl.aspx/GenerateUserSchedule",
data: "{'StartDate':'" + startDate + "', 'EndDate':'" + endDate + "', 'UserID':'" + currUserID +"'}", //params
contentType: "application/json",
dataType: "json",
success: function () {
alert('Succeeded');
},
error: AjaxFailed
});
}
コードをステップ実行すると、行ごとに関数が呼び出され、currDataRow と currUserID が期待どおりに入力され、ajax 呼び出しが実行され、ここに問題があります。呼び出しは行われますが、すべての行の呼び出しが完了するまで、成功関数もエラー関数も呼び出されません。次に、各行に対して success メソッドが呼び出されますが、必要なデータが失われています。
各 ajax リクエストに対して success 関数が呼び出されるようにコードを再構築するにはどうすればよいですか?
洞察をお寄せいただきありがとうございます。