微信小程式學習筆記(三)表單提交、PHP後臺資料互動
阿新 • • 發佈:2019-01-01
【form表單提交】
form.wxml:
<form bindsubmit="formSubmit" bindreset="formReset"> <view> 暱稱:<input type="text" name="nickname" placeholder="請輸入暱稱" confirm-type="done" /> 密碼:<input password type="number" name="password" placeholder="請輸入6位密碼" maxlength="6" /> 性別: <radio-group name="sex"> <label><radio value="女"/>女</label> <label><radio value="男"/>男</label> </radio-group> 愛好: <checkbox-group name="aihao"> <label><checkbox value="cy"/>抽菸</label> <label><checkbox value="hj"/>喝酒</label> <label><checkbox value="tt"/>燙頭</label> </checkbox-group> 狀態:<switch name="status"/> <view>成績:<slider name="grade" show-value ></slider></view> </view> <view class="btn-area"> <button formType="submit">提交</button> <button formType="reset">重置</button> </view> </form>
form.js:
Page({
formSubmit: function (e) {
console.log('form發生了submit事件,提交資料:', e.detail.value)
},
formReset: function () {
console.log('form發生了reset事件')
}
})
提交觸發formSubmit:
重置觸發formReset:
【表單資料提交到PHP後臺伺服器】
前臺form.js:
Page({ formSubmit: function (e) { wx.request({ url: 'https://www.msllws.top/getdata.php', data: { 'nickname': e.detail.value.nickname, 'password': e.detail.value.password, 'sex': e.detail.value.sex, 'status': e.detail.value.status, 'aihao': e.detail.value.aihao, 'grade': e.detail.value.grade }, method:'POST', header: { 'Content-Type': 'application/x-www-form-urlencoded' }, success: function (res) { console.log(res.data) } }) } })
後臺介面getdata.php:
<?php
$postdata = $_POST; //獲得POST請求提交的資料
//列印日誌 方便檢視
$fp = fopen('./log.txt','a+');
fwrite($fp,var_export($postdata,true));
fclose($fp);
echo 666; //返回狀態或資料
提交後日志文件log.txt內容如下,這些就是PHP後臺獲得的資料,可以對其進行資料庫操作:
array ( 'nickname' => '李棟', 'password' => '123456', 'sex' => '男', 'status' => 'true', 'aihao' => 'cy,hj,tt', 'grade' => '66', )
【PHP後臺對提交過來的資料進行判斷、處理,返回狀態,前臺小程式給出提示】
示例如下,如果輸入名字提示提交成功,不輸入名字提示名字為空。
後臺介面getdata.php:
<?php
$postdata = $_POST;
$fp = fopen('./log.txt','a+');
fwrite($fp,var_export($postdata,true));
fclose($fp);
if($postdata['nickname']){
$arr['state'] = 1;
$arr['info'] = '提交成功';
}else{
$arr['state'] = 0;
$arr['info'] = '名字為空';
}
echo json_encode($arr);die;
前臺form.js:
Page({
formSubmit: function (e) {
wx.request({
url: 'https://www.msllws.top/getdata.php',
data: {
'nickname': e.detail.value.nickname,
'password': e.detail.value.password,
'sex': e.detail.value.sex,
'status': e.detail.value.status,
'aihao': e.detail.value.aihao,
'grade': e.detail.value.grade
},
method: 'POST',
header: {
'Content-Type': 'application/x-www-form-urlencoded'
},
success: function (res) {
if (res.data.state == 1) {
wx.showToast({
title: res.data.info
});
}else{
wx.showToast({
title: res.data.info
});
}
}
})
}
})
【請求PHP後臺API介面,獲得資料,渲染頁面】
示例如下,獲得10條部落格資訊顯示在頁面中(介面用tp5寫的,普通php檔案用echo json_encode();返回資料)。
後臺介面Getdata.php:
<?php
namespace app\home\controller;
use think\Controller;
class Getdata extends Controller
{
public function index()
{
//查詢10篇部落格
$whe['is_del'] = 'N';
$artinfo = db('article')->field('`article_id`,`article_title`,`thumbnail`')->where($whe)->limit(10)->select();
//拼接縮圖路徑
foreach ($artinfo as $k => $v) {
$artinfo[$k]['thumbnail'] = 'https://www.msllws.top'.$v['thumbnail'];
}
return json($artinfo);
}
}
前臺data.js:
Page({
onLoad: function () {
var that = this
wx.request({
url: 'https://www.msllws.top/Getdata',
headers: {
'Content-Type': 'application/json'
},
success: function (res) {
that.setData({
artinfo: res.data
})
}
})
}
})
前臺data.wxml:
<view wx:for="{{artinfo}}" wx:for-item="artinfo">
<view>{{artinfo.article_title}}</view>
<image src="{{artinfo.thumbnail}}"></image>
</view>
頁面載入,顯示如下: