首頁 >後端開發 >PHP問題 >php接收不到ajax資料怎麼辦

php接收不到ajax資料怎麼辦

藏色散人
藏色散人原創
2020-07-25 10:01:563386瀏覽

php接收不到ajax資料的解決方法:1、新增宣告碼為「Content-Type=application/x-www-form-urlencoded」;2、以雙方約定的格式序列化成字串。

php接收不到ajax資料怎麼辦

推薦:《PHP教學

PHP接收不到ajax提交的json值的解決方法

JS需要指定contentType = application/x-www-form-urlencoded,傳送的json資料才會被PHP的$_POST接收到。

jQuery中的contentType預設值: “application/x-www-form-urlencoded”(發送訊息至伺服器時內容編碼類型)。預設值適合大多數情況,如果你明確地傳遞了一個 content-type 給 $.ajax() 那麼它必定會傳送給伺服器(即使沒有資料要傳送)。

1、如果使用 post 方式傳送,那麼必須有 Content-Type = application/x-www-form-urlencoded 的聲明,否則 php 不會將傳入的資料解析到 $_POST 陣列。

宣告了一個 contentType = application/json , Ajax自動補上一個 Content-Type = application/x-www-form-urlencoded 的宣告。這兩個相佐的聲明也會使 php 無所適從。

2、傳送的資料是 {data:jsonData},這是一個 js 物件。即使能夠傳送成功,php 也會因為不認識這個對象,而無法解析。凡是與外界進行交換的資料結構,都需要以雙方約定的格式序列化成字串

假定你的Js.Ajax 可以將js 的物件轉換成JSON 格式字串

#並且你也去掉了contentType = application/json 的宣告

那麼你在$_POST 中可以看到以那個JSON字串為鍵的元素

如果你堅持不願意去掉contentType = application/json的宣告

或許你一個用file_get_contents('php://input') 取到傳入的內容

php://input 允許讀取POST 的原始資料。和 $HTTP_RAW_POST_DATA 比起來,它給記憶體帶來的壓力較小,並且不需要任何特殊的 php.ini 設定。 php://input 不能用於 enctype=”multipart/form-data」。

以上是php接收不到ajax資料怎麼辦的詳細內容。更多資訊請關注PHP中文網其他相關文章!

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