44

AJAX Post リクエストを送信し、send() メソッドで queryString にパラメーターを送信すると、

Chrome Developer Tool の XHR キャプチャ ツールは、リクエスト ペイロードの下にパラメータを表示します。jquery の post 関数を使用すると、ツールは Form Data セクションの下にパラメーターを表示します。

違いはなんですか ?

4

1 に答える 1

29

送信機能の使用方法について十分な情報を提供していませんが、MIME タイプを設定してフォームデータを送信していることを指定していないと思います

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

この場合、送信されるデータは、クエリ文字列をエンコードするときにエンコードされます

xhr.send("name=foo&value=bar");

そうしないと、Developer Tools によってフォーム データとして解釈されません。

この点に関しては、jquery が大部分の作業を行います。

更新:違いは何かを明確に答えるには...

  • リクエスト (通常は POST)のContent-typeヘッダーが本文に設定されapplication/x-www-form-urlencodedている場合、URL エンコードされたキーと=のペアが&. 次に、フォーム データセクションにキーと値のパラメーターが表示されます (解析して表示した場合)。この方法は、HTML フォームのデフォルトであるため、以前はより一般的でした。

  • その他のケースは、リクエスト ペイロードセクションに示されています (現在では、JSON などの一般的な形式と同様に、読みやすさのために解析されています)。

于 2012-05-08T09:55:01.970 に答える