本文目錄一覽:
- 1、php怎麼接收json數據格式
- 2、在PHP中怎麼接收post過來的JSON數據
- 3、php讀取post的json數據
- 4、php怎麼寫服務端獲取 客戶端發來的json
- 5、PHP使用POST傳遞json數據的接收與處理問題
php怎麼接收json數據格式
PHP接收JSON格式的數據
在API服務中,目前流行採用json形式來交互。
給前端調用的介面輸出Json數據,這個比較簡單,只需要組織好數據,用json_encode($array) 轉化一下,前端就得到json格式的數據。
接收前端提交的json數據稍微複雜一點,原因是:PHP默認識別的數據類型是application/x-標準的數據類型。因此,對型如text/xml 或者 soap 或者 application/octet-stream 和application/json格式之類的內容無法解析,如果用$_POST數組來接收就會失敗!
此時可以使用$GLOBALS[‘HTTP_RAW_POST_DATA’] 或 file_get_contents(‘php://input’) 來獲取提交的數據
查看手冊,可以發現$GLOBALS[‘HTTP_RAW_POST_DATA’] 和 $_POST的區別:
$_POST:通過 HTTP POST 方法傳遞的變數組成的數組,是自動全局變數。
$GLOBALS[‘HTTP_RAW_POST_DATA’] :總是產生 $HTTP_RAW_POST_DATA 變數包含有原始的 POST 數據。此變數僅在碰到未識別 MIME 類型的數據時產生。$HTTP_RAW_POST_DATA 對於 enctype=”multipart/form-data” 表單數據不可用。也就是說基本上$GLOBALS[‘HTTP_RAW_POST_DATA’] 和 $_POST是一樣的。但是如果post過來的數據不是PHP能夠識別的,你可以用 $GLOBALS[‘HTTP_RAW_POST_DATA’]來接收,比如 text/xml 或者 soap 等等。
在PHP中怎麼接收post過來的JSON數據
var allUnivList = [{
“id”: 1,
“univs”: [{
“id”: 1001,
“name”: “清華大學”
},
{
“id”: 1002,
“name”: “北京大學”
}],
“country_id”: 0,
“name”: “北京”
}]
//比如你傳遞的是上面這個JSON格式,在PHP端,舉個用JQ提交的例子:
$.ajax({
url: “test.php”,
type: “post”,
data: { allcity: allUnivList},
success: function (data) {
alert(data);
},
error: function () {
alert(“系統異常!”);
}
});
php讀取post的json數據
使用json_decode($json, true)將json字元串轉化為php數組:
?php
$json = ‘{“create”: 14275555101,”data”:{“object”:{“order_no”:”123456789″,”amount”:100}},”object”:”event”}’;
$arr = json_decode($json, true);
if(isset($arr[‘data’][‘object’][‘order_no’]))
{
var_dump($arr[‘data’][‘object’][‘order_no’]);
}
if(isset($arr[‘data’][‘object’][‘order_no’]))
{
var_dump($arr[‘data’][‘object’][‘amount’]);
}
php怎麼寫服務端獲取 客戶端發來的json
如果使用的是HTTP協議的GET方法,數據保存在$_GET數組中.
如果使用的是HTTP協議的POST方法,數據通常保存在$_POST數組中.
注:如果post方法沒有指出數據類型,提交的數據可以通過$HTTP_RAW_POST_DATA獲取.
找到數據後可以通過json_decode函數處理下即可轉換成數組或對象.
PHP使用POST傳遞json數據的接收與處理問題
前端傳給伺服器的只是json 格式的字元串,使用json_decode,
mixed json_decode ( string $json [, bool $assoc ] )
var_dump(json_decode($json));
var_dump(json_decode($json, true));
如果不帶參數,則返回為對象
帶上true時,返回數組
foreach($ARR as $k=$v){
echo ‘key=’.$k.’;value=’.$v;
}
單獨處理每個key 和對應的value就好
原創文章,作者:小藍,如若轉載,請註明出處:https://www.506064.com/zh-tw/n/240585.html