php接收不到ajax資料的解決方法:1、新增宣告碼為「Content-Type=application/x-www-form-urlencoded」;2、以雙方約定的格式序列化成字串。
推薦:《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中文網其他相關文章!