IvanZh から、この方法はうまくいかないことがわかり、HTML5FormData
オブジェクトについて調査するようになりました。結局のところ、私はこれについて完全に間違っていました(以下の古い間違った回答を参照してください)。のすべてのデータFormData
はネイティブコードにあります。つまり、ブラウザーはフォーム フィールドのデータとファイルのアップロードをその実装言語で処理します。
MDN の引用:
注: ... FormData オブジェクトは文字列化可能なオブジェクトではありません。送信されたデータを文字列化する場合は、前の純粋な AJAX の例を使用してください。また、この例にはいくつかのファイル フィールドがありますが、FormData API を使用してフォームを送信する場合、FileReader API も使用する必要はありません。ファイルは自動的にロードおよびアップロードされます。
この情報を JavaScript で表現する方法はないため、単純に JSON としてシリアル化するという単純な提案は機能しません (そもそもなぜこの回答が受け入れられたのか疑問に思います)。
達成しようとしているものによっては (たとえば、デバッグのみを試みている場合)、関連する JSON メタデータを返すサーバー側スクリプトからこの情報を単純にバウンスすることが実行可能である場合があります。たとえば PHP では、FormData を に送信できます。analyzeForm.php
これにより、関連するリクエスト スーパーグローバルで FormData にアタッチしたすべてのものに簡単にアクセスできます。スクリプトはフォームの内容を消化し、解析しやすい JSON で関連情報を返します。これは非常に効率が悪いため、おそらく本番環境には適していませんが、何とかなります。
古い不正解:
あなたは使用してみることができます:
alert(JSON.stringify(fd));
の構造のテキスト表現を表示しますfd
。
を使用することもできますconsole.log
が、これは非標準の機能であり、すべてのブラウザーに存在するとは限りません。