首頁  >  文章  >  後端開發  >  為什麼 Axios POST 不使用 JSON 資料填入 PHP 中的 $_POST?

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

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 不支援 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中文網其他相關文章!

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn