[英]How to get JSON from URL in PHP
我正在使用這組數據進行Ajax調用:
"type":"alter",
"param":{
"key1":"value1",
"key2":"value2"
}
在PHP中,我通過以下方式處理此問題:
•獲取file_get_contents('php://input')
:
type=alter¶m%5Bkey1%5D=value1¶m%5Bkey2%5D=value2
•通過&
URL解碼和切片:
[
"type=alter",
"param[key1]=value1",
"param[key2]=value2"
]
•通過=
進一步切片每個切片:
[
[
"type",
"alter"
],
[
"param[key1]",
"value1"
],
[
"param[key2]",
"value2"
]
]
•然后創建一個對象$data
,每個索引0為鍵,索引1為值:
$data = array(
"type"=>"alter",
"param[key1]"=>"value1",
"param[key2]"=>"value2"
)
題:
當我在Ajax中設置的數據嚴格為key=value
,這不是問題,但是當我將數組或對象添加為值時,它會變得混亂。 我想處理Ajax中顯示的PHP中的數據集。 我期望的結果是:
$data = array(
"type"=>"alter",
"param"=>array(
"key1"=>"value1",
"key2"=>"value2"
)
)
這樣,當我獲得$data['param']
,它將給我所有的param鍵。 我可以手動執行此操作,但我認為可能會有更簡單的方法來執行此操作。 尤其是如果我可以立即從file_get_contents('php://input')
獲取所需的對象。
有一個內置的函數可以解析參數字符串: parse_str()
<?php
$in = 'type=alter¶m%5Bkey1%5D=value1¶m%5Bkey2%5D=value2';
parse_str($in, $data);
print_r($data);
/*
Array
(
[type] => alter
[param] => Array
(
[key1] => value1
[key2] => value2
)
)
*/
如果可以訪問$ _POST,則可以這樣做,也可以在執行操作前檢查$ _POST為空。
<?php
if ($_SERVER['REQUEST_METHOD'] == 'POST') {
if (empty($_POST)) {
parse_str(file_get_contents('php://input'), $_POST);
}
print_r($_POST);
/*
Array
(
[type] => alter
[param] => Array
(
[key1] => value1
[key2] => value2
)
)
*/
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.