鍍金池/ 問答/PHP  HTML/ php接收不到前端POST過來的json數(shù)據(jù)?。?!

php接收不到前端POST過來的json數(shù)據(jù)?。。?/h1>

問題:最近在開發(fā)微信小程序,后端是用PHP寫的,但是我頁面提交過去的Json數(shù)據(jù),php頁面接收不到,很奇怪!
下面前端代碼截圖:

clipboard.png

clipboard.png

clipboard.png

后臺php代碼:

<?php
    $val = $_POST['val'];
    var_dump($val);
?>

為什么這種格式的數(shù)據(jù) php收不到,我應該用什么方法解決,求各路大神賜教!

回答
編輯回答
神曲

代碼如下

$inputContent=file_get_contents("php://input");

php:// — 訪問各個輸入/輸出流(I/O streams)

http://php.net/manual/zh/wrap...

2017年7月9日 12:39
編輯回答
淡墨

file_get_contents("php://input"); 因為客戶端沒有把數(shù)據(jù)注入到全局變量內(nèi). 微信支付等騰訊系的回調(diào)經(jīng)常會遇到的問題. 這個寫法比較節(jié)省內(nèi)存.

2018年7月6日 13:43
編輯回答
爆扎

value加引號試試

2018年1月5日 07:26
編輯回答
怣痛

你是按表單的方式接收,但是提交的不是表單形式的數(shù)據(jù)

2018年5月4日 01:58
編輯回答
雨蝶

前端提交數(shù)據(jù)是以'Request Payload'類型,后端用$_POST接收肯定是空的。如果你想后端用$_POST接收,你前端要以'Form Data'提交。

2017年6月19日 03:14
編輯回答
乞許

轉換為字符串再提交 序列化一下

2017年3月4日 12:59
編輯回答
久愛她

通過表單提交的數(shù)據(jù)是form-data形式的,形如a=b&c=d,可以通過$_POST變量讀取。
而你的問題中,瀏覽器傳來的是raw形式的數(shù)據(jù),整個就是個編碼的JSON,所以$_POST是取不到值的,只能通過php://input拿到原始輸入:

$raw = file_get_contents('php://input');
$data = json_decode($raw, true);

拿到原始輸入還是個編碼的JSON,所以需要json_decode解碼,解碼完就可以用了

2017年1月29日 15:18