微信小程序搜索功能(附:小程序前端+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 相关文章推荐
将函数的实际参数转换成数组的方法
Jan 25 Javascript
打开新窗口关闭当前页面不弹出关闭提示js代码
Mar 18 Javascript
JS获取URL中的参数数据
Dec 05 Javascript
jquery禁用右键示例
Apr 28 Javascript
javascript实现给定半径求出圆的面积
Jun 26 Javascript
js图片轮播效果实现代码
Apr 18 Javascript
jQuery Ajax 异步加载显示等待效果代码分享
Aug 01 Javascript
Node.js中防止错误导致的进程阻塞的方法
Aug 11 Javascript
如何制作幻灯片(代码分享)
Jan 06 Javascript
Node.js如何响应Ajax的POST请求并且保存为JSON文件详解
Mar 10 Javascript
vue中使用vue-cli接入融云实现即时通信
Apr 19 Javascript
vue在响应头response中获取自定义headers操作
Jul 24 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操作XML作为数据库的类
2010/12/19 PHP
常见的PHP五种设计模式小结
2011/03/23 PHP
php 模拟GMAIL,HOTMAIL(MSN),YAHOO,163,126邮箱登录的详细介绍
2013/06/18 PHP
PHP对表单提交特殊字符的过滤和处理方法汇总
2014/02/18 PHP
浅谈PHP中单引号和双引号到底有啥区别呢?
2015/03/04 PHP
php单文件版在线代码编辑器
2015/03/12 PHP
laravel如何开启跨域功能示例详解
2017/08/31 PHP
yii2多图上传组件的使用教程
2018/05/10 PHP
理解Javascript_09_Function与Object
2010/10/16 Javascript
基于jquery的从一个页面跳转到另一个页面的指定位置的实现代码(带平滑移动的效果)
2011/05/24 Javascript
Jquery插件之打造自定义的select标签
2011/11/30 Javascript
javascript实现tabs选项卡切换效果(自写原生js)
2013/03/19 Javascript
setTimeout自动触发一个js的方法
2014/01/15 Javascript
js中iframe调用父页面的方法
2014/10/30 Javascript
javascript操作表格排序实例分析
2015/05/06 Javascript
jquery自定义插件开发之window的实现过程
2016/05/06 Javascript
微信小程序(三):网络请求
2017/01/13 Javascript
jQuery实现选项卡功能(两种方法)
2017/03/08 Javascript
JS ES6多行字符串与连接字符串的表示方法
2017/04/26 Javascript
Vue2.0 多 Tab切换组件的封装实例
2017/07/28 Javascript
微信小程序实现多个按钮的颜色状态转换
2019/02/15 Javascript
vue路由跳转传参数的方法
2019/05/06 Javascript
vue 父组件中调用子组件函数的方法
2019/06/06 Javascript
vue计算属性无法监听到数组内部变化的解决方案
2019/11/06 Javascript
angular组件间传值测试的方法详解
2020/05/07 Javascript
Python实现树莓派WiFi断线自动重连的实例代码
2017/03/16 Python
python 换位密码算法的实例详解
2017/07/19 Python
浅谈Python对内存的使用(深浅拷贝)
2018/01/17 Python
Python基于pandas实现json格式转换成dataframe的方法
2018/06/22 Python
使用Python项目生成所有依赖包的清单方式
2020/07/13 Python
Old Navy加拿大官网:美式休闲服饰品牌
2017/09/26 全球购物
Johnson Fitness澳大利亚:高级健身器材
2021/03/16 全球购物
法学专业个人求职信
2013/09/26 职场文书
咖啡馆创业计划书
2014/01/26 职场文书
校运会广播稿100字
2014/01/27 职场文书
python实现三阶魔方还原的示例代码
2021/04/28 Python