微信小程序的js后臺只能執(zhí)行一些簡單的邏輯逊彭,遇到比較復(fù)雜的處理表單數(shù)據(jù)的功能或者網(wǎng)絡(luò)功能就需要連接服務(wù)器來遠程處理,實現(xiàn)方式就是調(diào)用小程序的wx.request()這一接口构订。
小程序端
request請求就是基本的HTTP請求侮叮,可以攜帶一些表單數(shù)據(jù),交給服務(wù)器處理鲫咽。
在小程序中的寫法如下:
wx.request({
url: 'https://xxx.com/server.php',//接口地址
data: {//請求數(shù)據(jù)
key1: value1,
key2: value2
},
success: function (res) {//收到開發(fā)者服務(wù)成功返回的回調(diào)函數(shù)
console.log("complete")
console.log(res.data)
console.log(res.statusCode)
},
fail: function () {//接口調(diào)用失敗的回調(diào)函數(shù)
console.log("fail")
},
complete: function () {//接口調(diào)用結(jié)束的回調(diào)函數(shù)(調(diào)用成功签赃、失敗都會執(zhí)行)
console.log("complete")
}
})
- 可以設(shè)置請求的方式,默認為GET分尸。
- url項在開發(fā)調(diào)試時可以關(guān)閉域名檢查然后通過ip地址或者http地址等建立連接锦聊,而在小程序發(fā)布時則必須采用https請求,這意味著服務(wù)器端要安裝ssl證書箩绍,具體參見官方文檔孔庭。
- data項為請求攜帶的數(shù)據(jù),用json的形式進行表示材蛛。
- res.data為服務(wù)器返回的數(shù)據(jù)圆到,仍然是json形式。
- fail() 函數(shù)只在微信端接口調(diào)用失敗時回調(diào)卑吭,而 success() 函數(shù)只要成功發(fā)送了請求就會被回調(diào)芽淡,這意味著當服務(wù)器異常、無法完成請求時豆赏,還是會回調(diào) success() 函數(shù)挣菲。因此富稻,要通過返回對象 res 的 res.statuCode 屬性值來判斷連接情況。
- 還有許多屬性項沒有提及白胀,具體參見官方文檔椭赋。
服務(wù)器端
采用php作為服務(wù)器端語言,通過WAMP等框架可以很容易地搭建環(huán)境或杠,服務(wù)器主要完成對請求數(shù)據(jù)的處理以及結(jié)果數(shù)據(jù)的返回哪怔。
獲取請求數(shù)據(jù)
請求數(shù)據(jù)的獲取非常容易,直接訪問相應(yīng)的超全局數(shù)組向抢,對于GET方法而言认境,通過下面的方式即可:
<?php //server.php
$value1 = $_GET["key1"];
$value2 = $_GET["key2"];
?>
結(jié)果數(shù)據(jù)的返回
為了方便小程序端數(shù)據(jù)的處理,結(jié)果數(shù)據(jù)仍通過json格式返回笋额,具體在php中的簡單做法就是
<?php
$value1="abc";
$value2="def";
$res["key1"]=$value1;
$res["key2"]=$value2;
echo json_encode($res);//將數(shù)組轉(zhuǎn)換為json格式并通過echo返回
?>
這樣返回的json數(shù)據(jù)就為
{
"key1": "abc",
"key2": "def"
}
其中value1,value2等變量可以設(shè)置為多維數(shù)組元暴,這樣通過json_encode() 函數(shù)之后就可以得到相應(yīng)的嵌套的json數(shù)據(jù),從而方便處理兄猩。
通過php可以很容易地處理微信小程序的request請求茉盏,筆者是由于前一段時間需要進行微信小程序的開發(fā),就研究了一下小程序的邏輯枢冤,然后嘗試用php進行服務(wù)端處理鸠姨,對于簡單的請求處理起來覺得還不錯,這篇文章可以作為初次接觸微信小程序的一個參考淹真。