微信小程序搜索功能(附:小程序前端+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 相关文章推荐
jquery的ajaxSubmit()异步上传图片并保存表单数据演示代码
Jun 04 Javascript
js 实现日期灵活格式化的小例子
Jul 14 Javascript
jQuery父级以及同级元素查找介绍
Sep 04 Javascript
JavaScript静态类型检查工具FLOW简介
Jan 06 Javascript
判断访客终端类型集锦
Jun 05 Javascript
javascript 常见功能汇总
Jun 11 Javascript
基于javascript bootstrap实现生日日期联动选择
Apr 07 Javascript
js制作可以延时消失的菜单
Jan 13 Javascript
原生JS发送异步数据请求
Jun 08 Javascript
JS实现加载时锁定HTML页面元素的方法
Jun 24 Javascript
vue js秒转天数小时分钟秒的实例代码
Aug 08 Javascript
vue 使用自定义指令实现表单校验的方法
Aug 28 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
第十三节 对象串行化 [13]
2006/10/09 PHP
php控制linux服务器常用功能 关机 重启 开新站点等
2012/09/05 PHP
对PHP语言认识上需要避免的10大误区
2014/06/12 PHP
PHP中preg_match正则匹配中的/u、/i、/s含义
2015/04/17 PHP
PHP实现的Redis多库选择功能单例类
2017/07/27 PHP
用document.documentElement取代document.body的原因分析
2009/11/12 Javascript
jquery 如何动态添加、删除class样式方法介绍
2012/11/07 Javascript
判断window.onload是否多次使用的方法
2014/09/21 Javascript
省市选择的简单实现(基于zepto.js)
2016/06/21 Javascript
React Native实现地址挑选器功能
2017/10/24 Javascript
js+css实现红包雨效果
2018/07/12 Javascript
python应用程序在windows下不出现cmd窗口的办法
2014/05/29 Python
python中执行shell的两种方法总结
2017/01/10 Python
Python 专题六 局部变量、全局变量global、导入模块变量
2017/03/20 Python
详解Python中类的定义与使用
2017/04/11 Python
Python实现Mysql数据统计及numpy统计函数
2019/07/15 Python
应用OpenCV和Python进行SIFT算法的实现详解
2019/08/21 Python
PyCharm 专业版安装图文教程
2020/02/20 Python
使用Keras预训练模型ResNet50进行图像分类方式
2020/05/23 Python
python实现数字炸弹游戏程序
2020/07/17 Python
Python Pandas list列表数据列拆分成多行的方法实现
2020/12/14 Python
CSS3制作精致的照片墙特效
2016/06/07 HTML / CSS
Bobbi Brown芭比波朗美国官网:化妆师专业彩妆保养品品牌
2016/08/18 全球购物
如何打开WebSphere远程debug
2014/10/10 面试题
abstract是什么意思
2012/02/12 面试题
优秀班干部事迹材料
2014/01/26 职场文书
商务英语专业求职信范文
2014/01/28 职场文书
代理班主任的自我评价
2014/02/04 职场文书
小班上学期评语
2014/05/05 职场文书
投标服务承诺书
2014/05/28 职场文书
建筑工程质量通病防治方案
2014/06/08 职场文书
党支部三会一课计划
2014/09/24 职场文书
项目验收申请报告
2015/05/15 职场文书
2015年度酒店客房部工作总结
2015/05/25 职场文书
主持人开场白台词
2015/05/29 职场文书
Jupyter Notebook内使用argparse报错的解决方案
2021/06/03 Python