Axios Posting 參數在PHP 變數中不可用
此程式碼片段使用Axios 函式庫發出POST 請求,設定為Content-Type 標頭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 的 $POST 和 $REQUEST 變數中缺少 Axios POST 請求資料?的詳細內容。更多資訊請關注PHP中文網其他相關文章!