微信小程序搜索功能(附:小程序前端+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 相关文章推荐
document.all还是document.getElementsByName?
Jul 21 Javascript
用roll.js实现的图片自动滚动+鼠标触动的特效
Mar 18 Javascript
用js实现的仿sohu博客更换页面风格(简单版)
Mar 22 Javascript
JavaScript中的apply和call函数详解
Jul 20 Javascript
javascript中setAttribute()函数使用方法及兼容性
Jul 19 Javascript
jQuery获取父元素节点、子元素节点及兄弟元素节点的方法
Apr 14 Javascript
jquery插件autocomplete用法示例
Jul 01 Javascript
Javascript的动态增加类的实现方法
Oct 20 Javascript
angularJS 指令封装回到顶部示例详解
Jan 22 Javascript
详谈$.data()的用法和作用
Feb 13 Javascript
js+canvas实现滑动拼图验证码功能
Mar 26 Javascript
js实现随机点名程序
Sep 17 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 水平的题目
2007/05/30 PHP
PHP之数组学习
2011/05/29 PHP
PHP 断点续传实例详解
2017/11/11 PHP
Firefox 无法获取cssRules 的解决办法
2006/10/11 Javascript
使用prototype.js进行异步操作
2007/02/07 Javascript
js 代码集(学习js的朋友可以看下)
2009/07/22 Javascript
用JavaScript将从数据库中读取出来的日期型格式化为想要的类型。
2009/08/15 Javascript
基于JQuery框架的AJAX实例代码
2009/11/03 Javascript
javascript下高性能字符串连接StringBuffer类
2010/08/16 Javascript
jQuery响应enter键的实现思路
2014/04/18 Javascript
ECMAScript5中的对象存取器属性:getter和setter介绍
2014/12/08 Javascript
node.js中的http.response.writeHead方法使用说明
2014/12/14 Javascript
js获取鼠标位置实例详解
2015/12/09 Javascript
Jquery Easyui表单组件Form使用详解(30)
2016/12/19 Javascript
Javascript ES6中数据类型Symbol的使用详解
2017/05/02 Javascript
使用travis-ci如何持续部署node.js应用详解
2017/07/30 Javascript
js实现鼠标跟随运动效果
2020/08/02 Javascript
Vue2.0父组件与子组件之间的事件发射与接收实例代码
2017/09/19 Javascript
Angular7.2.7路由使用初体验
2019/03/01 Javascript
layui复选框限制选择个数的方法
2019/09/18 Javascript
基于原生js实现九宫格算法代码实例
2020/07/03 Javascript
利用Python实现Windows定时关机功能
2017/03/21 Python
Python 实现链表实例代码
2017/04/07 Python
Python实现的中国剩余定理算法示例
2017/08/05 Python
opencv改变imshow窗口大小,窗口位置的方法
2018/04/02 Python
python3安装pip3(install pip3 for python 3.x)
2018/04/03 Python
让你Python到很爽的加速递归函数的装饰器
2019/05/26 Python
python 实现简单的FTP程序
2019/12/27 Python
python对XML文件的操作实现代码
2020/03/27 Python
Python3利用scapy局域网实现自动多线程arp扫描功能
2021/01/21 Python
请写出 float x 与"零值"比较的 if 语句
2016/01/04 面试题
教师年终个人总结
2015/02/11 职场文书
2015年第十五个全民国防教育日宣传活动方案
2015/05/06 职场文书
乡镇司法所2015年度工作总结
2015/10/14 职场文书
Kubernetes部署实例并配置Deployment、网络映射、副本集
2022/04/01 Servers
vue-cli3.0修改打包后的文件名和文件地址,打包后本地运行报错解决
2022/04/06 Vue.js