ホームページ  >  記事  >  バックエンド開発  >  Axios POST リクエスト データが PHP の $POST 変数と $REQUEST 変数にないのはなぜですか?

Axios POST リクエスト データが PHP の $POST 変数と $REQUEST 変数にないのはなぜですか?

Mary-Kate Olsen
Mary-Kate Olsenオリジナル
2024-10-22 23:17:29897ブラウズ

Why is Axios POST Request Data Missing from PHP's $POST and $REQUEST Variables?

PHP 変数では利用できない Axios Posting パラメーター

このコード スニペットは、Axios ライブラリを使用して POST リクエストを作成し、Content-Type ヘッダーを設定しますto application/x-www-form-urlencoded:

axios({
    method: 'post',
    url,
    headers: { 'Content-Type': 'application/x-www-form-urlencoded' },
    data: {
        json,
        type,
    }   
})  

ただし、同等の PHP 変数 $_POST と $_REQUEST はリクエスト後も空のままです。代わりに、file_get_contents("php://input") がデータを受信して​​いるようです。

原因と解決策

この不一致は、Axios がデフォルトでデータをシリアル化する方法から発生します。 。 JavaScript オブジェクトを JSON に変換しますが、PHP は $_POST の設定をネイティブにサポートしていません。 PHP は、HTML フォームでサポートされている機械処理可能な形式 (application/x-www-form-urlencoded および multipart/form-data) のみを受け入れます。

これに対処するには、いくつかのオプションがあります。

  • ブラウザ:

    • URLSearchParams API を使用する:

      var params = new URLSearchParams();
      params.append('param1', 'value1');
      params.append('param2', 'value2');
      axios.post('/foo', params); 
    • qs ライブラリを使用する:

      var qs = require('qs');
      axios.post('/foo', qs.stringify({ 'bar': 123 }));
  • PHP のカスタマイズ:

    • この回答に従って JSON を処理できるように PHP を調整します。 [回答へのリンク]

以上がAxios POST リクエスト データが PHP の $POST 変数と $REQUEST 変数にないのはなぜですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。