微信小程序搜索功能(附:小程序前端+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客户端快捷键管理类的较完整实现和应用
Jun 08 Javascript
jQuery去掉字符串起始和结尾的空格(多种方法实现)
Apr 01 Javascript
JavaScript实现简单图片翻转的方法
Apr 17 Javascript
javascript实现的右下角弹窗实例
Apr 24 Javascript
纯javascript模仿微信打飞机小游戏
Aug 20 Javascript
es6 字符串String的扩展(实例讲解)
Aug 03 Javascript
JavaScript实现计算圆周率到小数点后100位的方法示例
May 08 Javascript
JS 正则表达式验证密码、邮箱格式的实例代码
Oct 28 Javascript
如何利用vue+vue-router+elementUI实现简易通讯录
May 13 Javascript
详解Nuxt.js中使用Element-UI填坑
Sep 06 Javascript
js+canvas绘制图形验证码
Sep 21 Javascript
关于javascript中的promise的用法和注意事项(推荐)
Jan 15 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中IP地址与整型数字互相转换详解
2014/08/20 PHP
PHP Echo字符串的连接格式
2016/03/07 PHP
PHP中静态变量的使用方法实例分析
2016/12/01 PHP
详解php协程知识点
2018/09/21 PHP
PHP基于cookie实现统计在线人数功能示例
2019/01/16 PHP
javascript document.referrer 用法
2009/04/30 Javascript
js cookies实现简单统计访问次数
2009/11/24 Javascript
Firefox和IE兼容性问题及解决方法总结
2013/10/08 Javascript
Document:getElementsByName()使用方法及示例
2013/10/28 Javascript
关于删除时的提示处理(确定删除吗)
2013/11/03 Javascript
javascript获取select的当前值示例代码(兼容IE/Firefox/Opera/Chrome)
2013/12/17 Javascript
JS清空多文本框、文本域示例代码
2014/02/24 Javascript
JQuery记住用户名和密码的具体实现
2014/04/04 Javascript
ECMAScript6的新特性箭头函数(Arrow Function)详细介绍
2014/06/07 Javascript
jQuery中:header选择器用法实例
2014/12/29 Javascript
jquery动感漂浮导航菜单代码分享
2020/04/15 Javascript
jQuery实现二级下拉菜单效果
2016/01/05 Javascript
Markdown+Bootstrap图片自适应属性详解
2016/05/21 Javascript
jQuery Mobile 触摸事件实例
2016/06/04 Javascript
jQuery插件jquery.kxbdmarquee.js实现无缝滚动效果
2017/02/15 Javascript
微信小程序 Buffer缓冲区的详解
2017/07/06 Javascript
vue.js实现的经典计算器/科学计算器功能示例
2018/07/11 Javascript
jsonp跨域获取百度联想词的方法分析
2019/05/13 Javascript
详解Python开发中如何使用Hook技巧
2017/11/01 Python
通过Python 接口使用OpenCV的方法
2018/04/02 Python
Selenium的使用详解
2018/10/19 Python
Python爬虫教程知识点总结
2020/10/19 Python
AmazeUI图片轮播效果的示例代码
2020/08/20 HTML / CSS
爱淘宝:淘宝网购物分享平台
2017/04/28 全球购物
门诊挂号室室长岗位职责
2013/11/27 职场文书
给男朋友的道歉信
2014/01/12 职场文书
旅游市场营销方案
2014/03/09 职场文书
迁户口计划生育证明
2014/10/19 职场文书
职位证明模板
2015/06/23 职场文书
请病假条范文
2015/08/17 职场文书
利用Python脚本写端口扫描器socket,python-nmap
2022/07/23 Python