1. 程式人生 > >微信小程式學習筆記(三)表單提交、PHP後臺資料互動

微信小程式學習筆記(三)表單提交、PHP後臺資料互動

【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>

頁面載入,顯示如下: