PHP中的json上傳是現(xiàn)代web應(yīng)用程序開發(fā)中的一個重要方面。使用json格式上傳數(shù)據(jù)、更新數(shù)據(jù)、刪除數(shù)據(jù)和查詢數(shù)據(jù),已經(jīng)成為現(xiàn)代web應(yīng)用程序開發(fā)的標準。下面我們將詳細介紹在PHP中如何利用json實現(xiàn)上傳功能。
使用Json格式上傳數(shù)據(jù)最常見的場景是在移動應(yīng)用中,例如一個手機上的應(yīng)用程序可以上傳用戶的位置信息,應(yīng)用程序服務(wù)端會使用Json格式來接收這些信息。
//前端代碼示例
var requestData = {
"latitude" : 31.22,
"longitude" : 121.48,
"timestamp" : 1514786850
};
$.ajax({
url : "http://example.com/locations",
type: "POST",
dataType:"json",
contentType: "application/json; charset=utf-8",
data : JSON.stringify(requestData),
success:function(response){
console.log(response)
},
error:function(response)
{
console.log(response)
}
});
如上方代碼所示,使用jQuery的Ajax功能可以方便地進行json數(shù)據(jù)的上傳與傳輸。在調(diào)用Ajax函數(shù)時,需要設(shè)置兩個非常關(guān)鍵的參數(shù):
1. dataType: 輸入的數(shù)據(jù)格式為json;
2. contentType: 輸出數(shù)據(jù)格式為json。
由于需要將Json數(shù)據(jù)作為其他數(shù)據(jù)進行傳輸,需要使用JSON.stringify方法將json數(shù)據(jù)轉(zhuǎn)換成字符串對象。
//后端代碼示例
header('Content-Type: application/json;charset=utf-8');
$json = file_get_contents('php://input');
$data = json_decode($json, true);
echo json_encode($data);
下面是后端代碼的解釋:
1. 使用的是header函數(shù)設(shè)置返回給客戶端數(shù)據(jù)的格式,其中 Content-Type 并不是必須設(shè)置的,但是為避免客戶端解析異常,建議設(shè)置為application/json;
2. 從php請求實體中獲取需要上傳的數(shù)據(jù),我們使用了 file_get_contents('php://input')方法;
3. 使用json_decode方法解析客戶端上傳的Json數(shù)據(jù),其中第二個參數(shù)設(shè)置為true是為將解析的結(jié)果處理成數(shù)組,而不是對象;
4. 最后,我們講上傳的數(shù)據(jù)用json_encode方法重新進行編碼,并返回給客戶端;
如此,在完成了前端Ajax的各項配置后,PHP服務(wù)器端便能夠接收并處理來自客戶端的Json數(shù)據(jù),并返回所需的數(shù)據(jù)結(jié)果。
以上便是php中使用json完成上傳的相關(guān)內(nèi)容,對于開發(fā)者而言,掌握Json格式上傳數(shù)據(jù)非常重要,因為json不但可以方便地處理上傳數(shù)據(jù),還可以用作API的數(shù)據(jù)格式,為web應(yīng)用程序的開發(fā)提供了極大的便利。