為什麼 Axios POST 不使用 JSON 資料填入 PHP 中的 $_POST?

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 不支援 JSON 作為 $_POST 群體的本機資料格式。它僅接受HTML 表單支援的機器可處理格式:

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

multipart/form-data

multipart/form-data

解決方案:

var params = new URLSearchParams();
params.append('param1', 'value1');
params.append('param2', 'value2');
axios.post('/foo', params);
登入後複製
要解決此問題,可以修改Axios 請求以application/x-www-form-urlencoded 格式發送數據,PHP 可以正確處理。有兩個主要選項:

1。使用URLSearchParams API(僅限瀏覽器):

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

2.使用qs 函式庫(Node.js):

這些方法:這些方法:這些方法:這些方法確保請求資料正確序列化為application/x-www-form-urlencoded 格式,使其可以透過$_POST 存取PHP。 或者,您可以修改 PHP 以將 JSON 處理為 $_POST 的有效資料格式,但不太推薦這種方法。

以上是為什麼 Axios POST 不使用 JSON 資料填入 PHP 中的 $_POST?的詳細內容。更多資訊請關注PHP中文網其他相關文章!

來源:php
本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn
作者最新文章
熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板
關於我們 免責聲明 Sitemap
PHP中文網:公益線上PHP培訓,幫助PHP學習者快速成長!