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