首頁  >  文章  >  後端開發  >  為什麼 PHP 的 $POST 和 $REQUEST 變數中缺少 Axios POST 請求資料?

為什麼 PHP 的 $POST 和 $REQUEST 變數中缺少 Axios POST 請求資料?

Mary-Kate Olsen
Mary-Kate Olsen原創
2024-10-22 23:17:29989瀏覽

Why is Axios POST Request Data Missing from PHP's $POST and $REQUEST Variables?

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 以處理JSON: [回答連結]

以上是為什麼 PHP 的 $POST 和 $REQUEST 變數中缺少 Axios POST 請求資料?的詳細內容。更多資訊請關注PHP中文網其他相關文章!

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