微信小程序搜索功能(附:小程序前端+PHP后端)


Posted in Javascript onFebruary 28, 2019

开发需求

微信小程序已经是非常火了,而且学习也比较容易,但是对于初学者来说还是一件比较伤脑筋的事,接下来给大家分享一下小程序搜索的思路。

流程

1、表单(输入框、提交按钮、提交的name值)
2、接收表单数据(js获取表单name=keyword的值)
3、通过wx.request向服务器后端发起请求查询数据库
4、返回JSON格式的数据给小程序,js解析渲染到小程序前端展示

界面

微信小程序搜索功能(附:小程序前端+PHP后端)

代码

index.wxml

<!-- 标题 -->
<view class="title">小程序搜索</view>

<!-- 搜索框view -->
<view class="search_con">

<!-- 表单 -->
 <form bindsubmit="formSubmit">
 <!-- 记得设置name值,这样JS才能接收name=keyword的值 -->
  <input type="text" name="keyword" class="search_input" placeholder='你要找什么呢?'/>
  <button formType="submit" class="search_btn">搜索</button>  
 </form>
</view>

<!-- 搜索结果展示 -->
<view wx:for="{{re}}" wx:key="re" class="search_result">
<!-- 当提交空白表单的时候 -->
 <view class="empty">{{item.empty}}</view>
 <!-- 当有搜索结果的时候 -->
 <view class="resname">{{item.resname}}</view>
 <!-- 当查询不到结果的时候 -->
 <view class="noresult">{{item.noresult}}</view>
</view>

index.js

其中里面的

http://localhost/search.php?keyword=

是服务器后端接口,用于接收小程序传过去的关键词的,下面会有这个后端PHP文件。

const app = getApp()
Page({
 data: {},

 //执行点击事件
 formSubmit: function (e) {

  //声明当天执行的
  var that = this;

  //获取表单所有name=keyword的值
  var formData = e.detail.value.keyword;

  //显示搜索中的提示
  wx.showLoading({
   title: '搜索中',
   icon: 'loading'
  })

  //向搜索后端服务器发起请求
  wx.request({

   //URL
   url: 'http://localhost/search.php?keyword=' + formData,

   //发送的数据
   data: formData,

   //请求的数据时JSON格式
   header: {
    'Content-Type':'application/json'
   },

   //请求成功
   success: function (res) {

    //控制台打印(开发调试用)
    console.log(res.data)

    //把所有结果存进一个名为re的数组
    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;
}

服务端

search.php

<?php
header('Content-Type:application/json');

//获取表单数据
$keyword1 = $_GET["keyword"];

//过滤表单空格
$keyword2 = trim($keyword1);

//当表单提交空白数据时
if(empty($keyword2)){
  
  //构建数组
  $arr = array(
      "empty" => "表单不能为空"
    );

  //把数组转换为json
  $data = json_encode($arr);
  echo "[$data]";

}else{

//过滤表单特殊字符
$replace = array('!','@','#','$','%','^','&','*','(',')','_','-','+','=','{','}','[',']',';',':','"','<','>','?','/','|');
$keyword3 = str_replace($replace, '', $keyword2);

// 连接数据库
$con = mysql_connect("数据库地址","数据库账号","数据库密码");
if (!$con){die('Could not connect: ' . mysql_error());}

mysql_select_db("数据库名", $con);
mysql_query("SET NAMES UTF8");

//查询数据库
$result = mysql_query("SELECT * FROM 表名 WHERE 需要查询的字段 like '%$keyword3%' ORDER BY ID DESC");
$results = array();
//查询数据库是否存在这条记录
$exist = mysql_num_rows($result);
if ($exist) {
  //遍历输出
  while ($row = mysql_fetch_assoc($result)){
    $results[] = $row;
    }

  //输出JSON
  echo json_encode($results);

  //当查询无结果的时候
  }else{

    //构建数组
    $arr = array(
      "noresult" => "暂无结果"
    );

    //把数组转换为json
    $data = json_encode($arr);
    echo "[$data]";
}

//断开数据库连接
mysql_close($con);
}
?>

服务端也是非常简单的,大家自己把服务端写好一点,毕竟安全和效率是很重要的。

演示

微信小程序搜索功能(附:小程序前端+PHP后端)

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持三水点靠木。

Javascript 相关文章推荐
js,jQuery 排序的实现代码,网页标签排序的实现,标签排序
Apr 27 Javascript
javascript四舍五入函数代码分享(保留后几位)
Dec 10 Javascript
javascript实现鼠标放上后下边对应内容变换的效果
Aug 06 Javascript
JS组件Bootstrap Table使用方法详解
Feb 02 Javascript
很实用的js选项卡切换效果
Aug 12 Javascript
Javascript 两种刷新方法以及区别和适用范围
Jan 17 Javascript
Bootstrap面板学习使用
Feb 09 Javascript
JavaScript模块模式实例详解
Oct 25 Javascript
浅析JS抽象工厂模式
Dec 14 Javascript
vue.js中created方法作用
Mar 30 Javascript
Vue v-for循环之@click点击事件获取元素示例
Nov 09 Javascript
node.js中Buffer缓冲器的原理与使用方法分析
Nov 23 Javascript
详解写好JS条件语句的5条守则
Feb 28 #Javascript
JS判断两个数组或对象是否相同的方法示例
Feb 28 #Javascript
jQuery.parseJSON()函数详解
Feb 28 #jQuery
js获取form表单中name属性的值
Feb 27 #Javascript
用VueJS写一个Chrome浏览器插件的实现方法
Feb 27 #Javascript
jQuery each和js forEach用法比较
Feb 27 #jQuery
JavaScript遍历数组的三种方法map、forEach与filter实例详解
Feb 27 #Javascript
You might like
PHP在XP下IIS和Apache2服务器上的安装
2006/09/05 PHP
php 地区分类排序算法
2013/07/01 PHP
jquery imgareaselect 使用利用js与程序结合实现图片剪切
2009/07/30 Javascript
如何实现textarea里的不同文本显示不同颜色
2014/01/20 Javascript
JavaScript检测字符串中是否含有html标签实现方法
2015/07/01 Javascript
JavaScript随机生成颜色的方法
2016/10/15 Javascript
Jquery 整理元素选取、常用方法一览表
2016/11/26 Javascript
解决vue+webpack打包路径的问题
2018/03/06 Javascript
微信二次分享报错invalid signature问题及解决方法
2019/04/01 Javascript
vue router总结 $router和$route及router与 router与route区别
2019/07/05 Javascript
python字符串加密解密的三种方法分享(base64 win32com)
2014/01/19 Python
python操作gmail实例
2015/01/14 Python
以一段代码为实例快速入门Python2.7
2015/03/31 Python
用Python生成器实现微线程编程的教程
2015/04/13 Python
Python字符串拼接六种方法介绍
2017/12/18 Python
解决python super()调用多重继承函数的问题
2019/06/26 Python
Python中的延迟绑定原理详解
2019/10/11 Python
pandas的相关系数与协方差实例
2019/12/27 Python
使用OpenCV实现道路车辆计数的使用方法
2020/07/15 Python
Python中读取文件名中的数字的实例详解
2020/12/25 Python
CSS3实现3D翻书效果
2016/06/20 HTML / CSS
Clarks英国官方网站:全球领军鞋履品牌
2016/11/26 全球购物
美体小铺瑞典官方网站:The Body Shop瑞典
2018/01/27 全球购物
Troy-Bilt官网:草坪割草机、吹雪机、分蘖机等
2019/02/19 全球购物
会计应届生的自荐信
2013/12/13 职场文书
儿子婚宴答谢词
2014/01/09 职场文书
回门宴答谢词
2014/01/13 职场文书
《厄运打不垮的信念》教学反思
2014/04/13 职场文书
伦敦奥运会口号
2014/06/13 职场文书
摄影专业毕业生求职信
2014/08/05 职场文书
2014年班主任工作总结
2014/11/08 职场文书
实习单位推荐信
2015/03/27 职场文书
html+css合并表格边框的示例代码
2021/03/31 HTML / CSS
完美处理python与anaconda环境变量的冲突问题
2021/04/07 Python
python 破解加密zip文件的密码
2021/04/22 Python
HTML中link标签属性的具体用法
2023/05/07 HTML / CSS