開發(fā)需求
微信小程序已經(jīng)是非常火了,而且學(xué)習(xí)也比較容易,但是對于初學(xué)者來說還是一件比較傷腦筋的事,接下來給大家分享一下小程序搜索的思路。
流程
1、表單(輸入框、提交按鈕、提交的name值)
2、接收表單數(shù)據(jù)(js獲取表單name=keyword的值)
3、通過wx.request向服務(wù)器后端發(fā)起請求查詢數(shù)據(jù)庫
4、返回JSON格式的數(shù)據(jù)給小程序,js解析渲染到小程序前端展示
界面

代碼
index.wxml
<!-- 標題 --><view class="title">小程序搜索</view><!-- 搜索框view --><view class="search_con"><!-- 表單 --> <form bindsubmit="formSubmit"> <!-- 記得設(shè)置name值,這樣JS才能接收name=keyword的值 --> <input type="text" name="keyword" class="search_input" placeholder='你要找什么呢?'/> <button formType="submit" class="search_btn">搜索</button> </form></view><!-- 搜索結(jié)果展示 --><view wx:for="{{re}}" wx:key="re" class="search_result"><!-- 當(dāng)提交空白表單的時候 --> <view class="empty">{{item.empty}}</view> <!-- 當(dāng)有搜索結(jié)果的時候 --> <view class="resname">{{item.resname}}</view> <!-- 當(dāng)查詢不到結(jié)果的時候 --> <view class="noresult">{{item.noresult}}</view></view>index.js
其中里面的
http://localhost/search.php?keyword=
是服務(wù)器后端接口,用于接收小程序傳過去的關(guān)鍵詞的,下面會有這個后端PHP文件。
const app = getApp()Page({ data: {}, //執(zhí)行點擊事件 formSubmit: function (e) { //聲明當(dāng)天執(zhí)行的 var that = this; //獲取表單所有name=keyword的值 var formData = e.detail.value.keyword; //顯示搜索中的提示 wx.showLoading({ title: '搜索中', icon: 'loading' }) //向搜索后端服務(wù)器發(fā)起請求 wx.request({ //URL url: 'http://localhost/search.php?keyword=' + formData, //發(fā)送的數(shù)據(jù) data: formData, //請求的數(shù)據(jù)時JSON格式 header: { 'Content-Type':'application/json' }, //請求成功 success: function (res) { //控制臺打印(開發(fā)調(diào)試用) console.log(res.data) //把所有結(jié)果存進一個名為re的數(shù)組 that.setData({ re: res.data, }) //搜索成功后,隱藏搜索中的提示 wx.hideLoading(); } }) },})index.wxss
/* 搜索樣式 */.title{ text-align: center; font-size: 20px; font-weight: bold;}.search_con{ width: 80%; margin:20px auto;}.search_con .search_input{ border: 1px solid rgb(214, 211, 211); height: 45px; border-radius: 100px; font-size: 17px; padding-left: 15px;/*此處要用padding-left才可以把光標往右移動15像素,不可以用text-indent*/ color: #333;}.search_con .search_btn{ margin-top: 15px; width: 100%; height: 45px; background: #56b273; color: #fff; border-radius: 100px;}.search_result{ width: 80%; margin:10px auto;}.search_result .empty{ text-align: center; color: #f00; font-size: 15px;}.search_result .noresult{ text-align: center; color: #666; font-size: 15px;}.search_result .resname{ text-align: left; color: #333; font-size: 15px;}
新聞熱點
疑難解答