1

POST リクエストには、次を使用する必要があることに気付きました。

xhr.setRequestHeader("Content-type", "application/x-www-form-urlencoded");

またはエラーが発生します。

ただし、FormData オブジェクトを唯一のデータとして送信すると、requestHeaders が設定されておらず、正常に動作します。

ヘッダーが必要なものとそうでないものがあるのは奇妙だと思いました。確認したかっただけです。

MDN ドキュメントには、次のように記載されています。

// xhr.setRequestHeader("Content-type", "multipart/form-data");

暗黙的に使用されます。IE は、デフォルトでフォーム データに使用されるため、実際にはこのヘッダーを設定しません。

設定すると、実際にはエラーが発生します。ドキュメントに従って設定すると、コードが壊れます。

ドキュメントから:

エンコーディング タイプが「multipart/form-data」に設定されている場合にフォームが使用するのと同じ形式を使用します。

この FormData の使用方法、つまり ajax で正しく使用する方法を説明する正式なドキュメントはありますか。

試行錯誤を繰り返しながら動作するようになりましたが、確かなリファレンスが欲しかったので、自分のコードに自信が持てるようになりました。

4

1 に答える 1

0

正しいエンコーディング タイプは、フォーム データに使用しているエンコーディングです。ヘッダーの目的は、送信しているデータを解釈するようにサーバー ホストに指示することです。

これが問題になるかどうかは、サーバー アプリケーションがデータを処理する方法によって異なります。生の入力を読み取る場合、ヘッダーは無関係です。ただし、ライブラリやランタイム環境が提供するフォーム処理 (PHP の .xml への入力など) を使用する場合は$_POST、フォーム データをエンコードする必要があり、ヘッダーはエンコードと一致する必要があります。

于 2013-06-12T18:28:27.683 に答える