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

Linda Hamilton
リリース: 2024-10-23 01:04:30
オリジナル
441 人が閲覧しました

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 サイトの他の関連記事を参照してください。

ソース:php
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
著者別の最新記事
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート
私たちについて 免責事項 Sitemap
PHP中国語ウェブサイト:福祉オンライン PHP トレーニング,PHP 学習者の迅速な成長を支援します!