私のASP.Net MVCページには、AJAXフォームがあります。async:falseを使用せずにajaxの挿入を正しい順序で実行できますか?
@using (Ajax.BeginForm("action", "controller", new AjaxOptions {
HttpMethod = "POST",
InsertionMode = InsertionMode.InsertAfter,
UpdateTargetId = "target"
}))
{
//form in here
<input name="foo">
//...
}
ユーザーは、データを入力して手動でフォームを送信するか、大量のデータをコピーして一度に送信できます。私はこれを行うには、次のJSを使用します。
jQuery.ajaxSetup({ async: false });
var objects = getDataFromClipboard();
for (x = 0; x < objects.length; x++) {
$('#foo').val(objects[x]);
$('#form').submit();
}
jQuery.ajaxSetup({ async: true });
問題は、私は、「非同期:false」を使用するように強制していますということで非常に遅いですし、それが働いている間、私のページ全体をフリーズします。私が "async:true"のままにすると、結果は誤った順序で追加されます。
これらのフォームで更新を順番に実行するような方法がありますか?
2つの可能性があります。まず、リクエストをチェーン化します。次に、すべてのデータを1つのリクエストに入れて送信します。後者はここでは最高の選択肢です。 'async:false'を提案する人は無視してください –
@RoryMcCrossan入力を処理しているコントローラ/モデルは、単一の値(文字列)で動作するように設定されています。 1つのリクエストですべてのデータを送信することはできますか、または配列を受け入れる/返すためにそれらを書き直す必要がありますか? –
はい、これらのエンドポイントのモデルを書き直す必要があります。 –