微信小程序搜索功能(附:小程序前端+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 表格合并的问题分享
Sep 17 Javascript
js加载读取内容及显示与隐藏div示例
Feb 13 Javascript
jQuery 取值、赋值的基本方法整理
Mar 31 Javascript
JavaScript中的正则表达式简明总结
Apr 04 Javascript
javascript实现炫酷的拖动分页
May 11 Javascript
JS实现网页右侧带动画效果的伸缩窗口代码
Oct 29 Javascript
jQuery检测滚动条是否到达底部
Dec 15 Javascript
JavaScript制作颜色反转小游戏
Sep 25 Javascript
JavaScript组件开发之输入框加候选框
Mar 10 Javascript
react 中父组件与子组件双向绑定问题
May 20 Javascript
微信小程序使用前置摄像头拍照
Oct 22 Javascript
Vue +WebSocket + WaveSurferJS 实现H5聊天对话交互的实例
Nov 18 Vue.js
详解写好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
德劲1103的维修打理经验
2021/03/02 无线电
PHP句法规则详解 入门学习
2011/11/09 PHP
php中实现记住密码下次自动登录的例子
2014/11/06 PHP
RGB颜色值转HTML十六进制(HEX)代码的JS函数
2009/04/25 Javascript
javascript 闭包
2011/09/15 Javascript
使用JSLint提高JS代码质量方法分享
2013/12/16 Javascript
JS使用getComputedStyle()方法获取CSS属性值
2014/04/23 Javascript
使用jquery修改表单的提交地址基本思路
2014/06/04 Javascript
js选择并转移导航菜单示例代码
2014/08/19 Javascript
jQuery ajax serialize() 方法使用示例
2014/11/02 Javascript
node.js中的fs.read方法使用说明
2014/12/17 Javascript
JavaScript中两个字符串的匹配
2016/06/08 Javascript
js中Number数字数值运算后值不对的解决方法
2017/02/28 Javascript
JS 组件系列之Bootstrap Table 冻结列功能IE浏览器兼容性问题解决方案
2017/06/30 Javascript
基于jQuery的左滑出现删除按钮的示例
2017/08/29 jQuery
ES6下子组件调用父组件的方法(推荐)
2018/02/23 Javascript
jQuery实现table表格checkbox全选的方法分析
2018/07/04 jQuery
vue2.0 路由模式mode=&quot;history&quot;的作用
2018/10/18 Javascript
axios携带cookie配置详解(axios+koa)
2018/12/28 Javascript
vue多页面项目中路由使用history模式的方法
2019/09/23 Javascript
node.js使用yargs处理命令行参数操作示例
2020/02/11 Javascript
[02:14]2016国际邀请赛中国区预选赛Ehome晋级之路
2016/07/01 DOTA
python 中文字符串的处理实现代码
2009/10/25 Python
Python基类函数的重载与调用实例分析
2015/01/12 Python
Python实现PS图像调整颜色梯度效果示例
2018/01/25 Python
python链接oracle数据库以及数据库的增删改查实例
2018/01/30 Python
python3爬取各类天气信息
2018/02/24 Python
Python中字符串String的基本内置函数与过滤字符模块函数的基本用法
2019/05/27 Python
利用python numpy+matplotlib绘制股票k线图的方法
2019/06/26 Python
python实现发送form-data数据的方法详解
2019/09/27 Python
HTML5响应式(自适应)网页设计的实现
2017/11/17 HTML / CSS
香港礼品网站:GiftU eshop
2017/09/01 全球购物
测试驱动开发的主要步骤是什么
2014/12/10 面试题
欢送退休感言
2014/02/08 职场文书
经典安踏广告词
2014/03/21 职场文书
详解java如何集成swagger组件
2021/06/21 Java/Android