2

jquery$.ajax();関数を使用してフォームのデータを投稿し、使用しているフォームのデータを取得していnew FormDataます。これは、フォームにも入力ファイルがあるためです。

問題は、フォームでもフィールドを無効にしたことです。通常は投稿されませんが、新しいFormDataものを使用すると投稿されます。

この問題を解決するには?無効な入力フィールドを投稿する必要はありません!

4

3 に答える 3

0

問題は、フォームでもフィールドを無効にしたことです。通常、それらは投稿されませんが、使用すると投稿されnew FormDataます。

XHRおよびHTML5によると、実際にはシリアル化してはなりません。それらのブラウザに対してバグを送信する必要があります。

この問題を解決するには?無効な入力フィールドを投稿する必要はありません!

私はあなたがそれらを必要としないだけです、修正を待ってください。それらを省略する必要がある場合は、次の回避策を試すことができます。

var $form = /* whatever you have */;
var $inputs = $form.find(":disabled").each(function() {
    $(this).data("xhr-name", this.name);
    this.name = ""; // fields with empty names must be ignored as well
});
var formdata = new FormData($form[0]);
$inputs.each(function() {
    this.name = $(this).data("xhr-name");
});

これでもうまくいかない場合は、a) 入力を DOM から完全に切り離して後で復元するか、b)FormData手動で作成することができます。

于 2014-01-31T16:18:16.343 に答える