function
成都創新互聯基于分布式IDC數據中心構建的平臺為眾多戶提供南充服務器托管 四川大帶寬租用 成都機柜租用 成都服務器租用。
ch_json_encode($data)
{
function
ch_urlencode($data)
{
if
(is_array($data)
||
is_object($data))
{
foreach
($data
as
$k
=
$v)
{
if
(is_scalar($v))
{
if
(is_array($data))
{
$data[$k]
=
urlencode($v);
}
elseif
(is_object($data))
{
$data-$k
=urlencode($v);
}
}
elseif
(is_array($data))
{
$data[$k]
=
ch_urlencode($v);//遞歸調用該函數
}
elseif
(is_object($data))
{
$data-$k
=
ch_urlencode($v);
}
}
}
return$data;
}
$ret
=
ch_urlencode($data);
$ret
=json_encode($ret);
return
urldecode($ret);
}
這個函數對中文支持的好一點,把數組生成json格式,再echo出來
概述
不對。
返回json用的json_encode()方法沒錯,但是需要在頭部聲明格式。
代碼解析
php返回需要用json_encode()方法來將需要轉換的字符串轉換成json編碼格式(注意:僅僅更換文件內容,而返回的文件依然為文本格式且編碼為gtk)
所以,這里需要在php頭部聲明
header('Content-Type:text/json;charset=utf-8');
拓展內容
json
JSON(JavaScript?Object Notation, JS 對象簡譜) 是一種輕量級的數據交換格式。它基于?ECMAScript?(歐洲計算機協會制定的js規范)的一個子集,采用完全獨立于編程語言的文本格式來存儲和表示數據。簡潔和清晰的層次結構使得 JSON 成為理想的數據交換語言。 易于人閱讀和編寫,同時也易于機器解析和生成,并有效地提升網絡傳輸效率。
json通常被作為配置文件,常見還有.ini
用json_encode()函數將數據編碼,然后就是json格式的數據了。
$data?=?[
'status'?=?0,
'msg'????=?'操作成功'
];
$json?=?json_encode($data);
echo?$json;
?php
header("Content-type:text/html;charset=utf-8");
if($_POST){
$d = $_POST['data'];//這里獲取的直接就是數組了,不需要用到json_decode
echo $d['doing'];
//print_r($d);
exit;
}
?
script src="js/jquery-1.7.2.min.js"/script
script type="text/javascript"
$(document).ready(function() {
$("#xx").click(function(){
var url = "test.php";
var str ="{'doing':'createvote','type':'type','num':'num','votetheme':'votetheme','creater':'loginname'}";//json格式字符串
var data = eval('('+str+')');//轉換成數組對象,不加這步,那么PHP獲取的是字符串。
$.post(url, {'data': data}, function(res) {//注意jquery的$.post的第2個參數必須是鍵值對形式
alert(res);
});
});
});
/script
input id="xx" type="button" value="點擊"
PHP接收JSON格式的數據
在API服務中,目前流行采用json形式來交互。
給前端調用的接口輸出Json數據,這個比較簡單,只需要組織好數據,用json_encode($array) 轉化一下,前端就得到json格式的數據。
接收前端提交的json數據稍微復雜一點,原因是:PHP默認識別的數據類型是application/x-標準的數據類型。因此,對型如text/xml 或者 soap 或者 application/octet-stream 和application/json格式之類的內容無法解析,如果用$_POST數組來接收就會失?。?/p>
此時可以使用$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默認識別的數據類型是application/x-標準的數據類型。
網站欄目:php前端json數據 php處理json數據
文章網址:http://vcdvsql.cn/article18/hehodp.html
成都網站建設公司_創新互聯,為您提供Google、營銷型網站建設、、微信小程序、網站維護、網站建設
聲明:本網站發布的內容(圖片、視頻和文字)以用戶投稿、用戶轉載內容為主,如果涉及侵權請盡快告知,我們將會在第一時間刪除。文章觀點不代表本網站立場,如需處理請聯系客服。電話:028-86922220;郵箱:631063699@qq.com。內容未經允許不得轉載,或轉載時需注明來源: 創新互聯