ホームページ  >  記事  >  バックエンド開発  >  Axios POST が PHP の $_POST に JSON データを入力しないのはなぜですか?

Axios POST が PHP の $_POST に JSON データを入力しないのはなぜですか?

Linda Hamilton
Linda Hamiltonオリジナル
2024-10-23 01:04:30443ブラウズ

Why Doesn't Axios POST Populate $_POST in PHP with JSON Data?

Axios POST パラメータに $_POST が設定されない

Axios を使用して JSON データで構成されるペイロードを含む POST リクエストを実行する場合、PHP は$_POST または $_REQUEST からのパラメーターを正しく解釈します。代わりに、リクエスト データは file_get_contents("php://input") を通じてアクセスできることがよくあります。

根本原因:

デフォルトでは、Axios は JavaScript オブジェクトを JSON にシリアル化します。 。ただし、PHP は、$_POST 作成のネイティブ データ形式として JSON をサポートしていません。 HTML フォームでサポートされている機械処理可能な形式のみを受け入れます:

  • application/x-www-form-urlencoded
  • multipart/form-data

解決策:

この問題を解決するには、PHP が正しく処理できる application/x-www-form-urlencoded 形式でデータを送信するように Axios リクエストを変更できます。主なオプションは 2 つあります:

1. URLSearchParams API の使用 (ブラウザーのみ):

var params = new URLSearchParams();
params.append('param1', 'value1');
params.append('param2', 'value2');
axios.post('/foo', params);

2. qs ライブラリ (Node.js) の使用:

var qs = require('qs');
axios.post('/foo', qs.stringify({ 'bar': 123 }));

これらのメソッドにより、リクエスト データが application/x-www-form-urlencoded 形式に適切にシリアル化され、$_POST を通じてアクセスできるようになります。 PHP.

あるいは、$_POST の有効なデータ形式として JSON を処理するように PHP を変更することもできますが、このアプローチはあまり推奨されません。

以上がAxios POST が PHP の $_POST に JSON データを入力しないのはなぜですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

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