3

私は次のコードを持っています:

var params = {
  task: task,
  pk: pk,
  rk: rk,
  responses: null
}

var resp = [];
$(".city-checkbox").each(function () {
  var i = parseInt(this.id.match(/\d+/)[0], 10);
  resp[i] = this.checked;
});
parms.responses = resp;

$.ajax({
  type: "POST",
  traditional: true,
  async: false,
  data: parms,
  dataType: "json",

  [...]
});

私のコードは、POSTMVCアクションにPOSTリクエストを送信します。jQueryのドキュメントを見ましたが、それでも従来の機能を理解できません。私が本当にこれをここで使う必要があるかどうか誰かが説明できますか?

async falseと同じ:それに不利な点はありますか?

4

1 に答える 1

4

のドキュメントtraditionalは実際にはjQuery.paramで終わりました:

jQuery 1.4以降、この$.param()メソッドはディープオブジェクトを再帰的にシリアル化して、PHPやRubyonRailsなどの最新のスクリプト言語やフレームワークに対応します。を設定すると、この機能をグローバルに無効にできますjQuery.ajaxSettings.traditional = true;

フラグを使用するかどうかは、バックエンドがパラメーターを逆シリアル化する方法によって異なります。問題が発生しない限り、おそらくデフォルト値の-を使い続けたいと思うでしょうfalseが、私は間違っている可能性があります。特定の環境でテストする必要があります。


更新-Kevinが言うように、自分が何をしているかを本当に理解していない限り、AJAX呼び出しが完了するまでユーザーのブラウザーをブロックするため、決して使用しないでください。async: falseこれを制御することはできません。より良いアプローチは、デフォルトasync: trueを使用して回転するGIFなどを表示し、UIを自分でブロックして、ユーザーに待機する必要があることを通知することです。

于 2012-10-12T17:35:04.473 に答える