Axios POST パラメータに $_POST が設定されない
Axios を使用して JSON データで構成されるペイロードを含む POST リクエストを実行する場合、PHP は$_POST または $_REQUEST からのパラメーターを正しく解釈します。代わりに、リクエスト データは file_get_contents("php://input") を通じてアクセスできることがよくあります。
根本原因:
デフォルトでは、Axios は JavaScript オブジェクトを JSON にシリアル化します。 。ただし、PHP は、$_POST 作成のネイティブ データ形式として JSON をサポートしていません。 HTML フォームでサポートされている機械処理可能な形式のみを受け入れます:
解決策:
この問題を解決するには、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 サイトの他の関連記事を参照してください。