8

[object FormData]の内部、特に名前が である特定の要素の内部に含まれるコンテンツを確認しようとしていますName。内容が正しいかどうかを確認するために警告したいのですが、そうすると次のように返されますundefined

    alert(fd['Name']);

フォームデータを正しく読み込んでいると確信しているので、間違った方法でデータにアクセスしていることが問題なのかと思っていました...

PS アラートのみfdが返されます[object FormData]

4

3 に答える 3

13

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が、これは非標準の機能であり、すべてのブラウザーに存在するとは限りません。

于 2012-12-01T19:30:09.040 に答える
4

ユーザー Spokey は、ここで jsFiddle を使用してこの手法を教えてくれました。これは、formData オブジェクトの値を「見る」ことができるという点で非常に便利でした。基本的なロジックは次のとおりです。

function submitFormFunction() {
//create formData object
var myFormData = new FormData();
// get the values from some input fields
var myKey1 = $("input[name='my_field_one']").val();
var myKey2 = $("input[name='my_field_two']").val();
// append the values to the formData object, whilst also defining their key names
myFormData.append("my_field_one",myKey1);
myFormData.append("my_field_two",myKey2);
// mock implementation - in order to view what is being sent
var xhr = new XMLHttpRequest;
xhr.open('POST', '/echo/html/', true);
xhr.send(myFormData);
}

Firebug で [Net] タブを開いたままにしておくと、値を確認できます。

于 2014-07-03T16:54:28.817 に答える
-2

やったほうがいい:

console.log(fd['Name']);

また、ほとんどのブラウザー、特に chrome では、開発者ツール (F12) を開いてコンソールを表示します。

オブジェクトの見栄えの良い展開可能なビューが表示され、それを調べることができます。

于 2012-12-01T19:26:23.047 に答える