后端实现搜索功能

界面比较丑,主要实现逻辑...

 

超级简单的界面,表单,提交按钮,搜索结果展示区域...

下面是index.wxml

 
  1. <!--index.wxml-->

  2. <form bindsubmit="formSubmit">

  3. <!--提交按钮 -->

  4. <input type="text" name="id" placeholder='输入关键词' style='border:1px solid #ccc;height:30px;'/>

  5. <button formType="submit" class="btn">搜索</button>

  6. </form>

  7. <view>搜索结果</view>

  8. <view wx:for="{{re}}" wx:key="re">

  9. <view style='color:#f00;'>{{item.result}}</view>

  10. <view style='color:green;'>{{item.title}}</view>

  11. </view>

*跟前端差不多,form表单要加一个bindsubmit="formSubmit"

接着就是index.js

 

 
  1. //index.js

  2. //获取应用实例

  3. const app = getApp()

  4. Page({

  5. /**

  6. * 页面的初始数据

  7. */

  8. data: {

  9. result:'',

  10. state:''

  11. },

  12. formSubmit: function (e) {

  13. var that = this;

  14. var formData = e.detail.value.id; //获取表单所有name=id的值

  15. wx.request({

  16. url: 'http://localhost/2018-5-24/search.php?id=' + formData,

  17. data: formData,

  18. header: { 'Content-Type': 'application/json' },

  19. success: function (res) {

  20. console.log(res.data)

  21. that.setData({

  22. re: res.data,

  23. })

  24. wx.showToast({

  25. title: '已提交',

  26. icon: 'success',

  27. duration: 2000

  28. })

  29. }

  30. })

  31. },

  32. })

url: 'http://localhost/2018-5-24/search.php?id=' + formData,

这个很容易理解
var that = this;
var formData = e.detail.value.id; 
先把表单name=id的值获得,然后赋给formData这个变量
然后,在url进行拼接,用+号拼接这个变量即可...

然后,提交到接口,后端进行处理即可,后端处理后返回json格式的数据,然后通过

 
  1. that.setData({

  2. re: res.data,

  3. })

进行打印在控制台,你也可以渲染在index.wxml

为了方便大家研究,我把后端的php源码也贴出来。

search.php

 
  1. <?php

  2. header("Content-type:text/json;charset=utf8");

  3. //定义参数

  4. $id = $_GET["id"];

  5. //表单验证

  6. if(empty($id)){

  7. echo "[{\"result\":\"表单为空...\"}]";

  8. }else{

  9. //连接数据库

  10. $con = mysql_connect("数据库链接","账号","密码");

  11. //设置数据库字符集

  12. mysql_query("SET NAMES UTF8");

  13. //查询数据库

  14. mysql_select_db("数据库名", $con);

  15. $result = mysql_query("SELECT * FROM test WHERE id like '%$id%'");

  16. $results = array();

  17. while($row = mysql_fetch_assoc($result))

  18. {

  19. $results[] = $row;

  20. // 将数组转成json格式

  21. echo json_encode($results);

  22. }

  23. //关闭数据库连接

  24. mysql_close($con);

  25. }

  26. ?>

*数据库表名为test,里面一共有两个字段,一个是id,一个是title

所以index.wxml里面有两个值

 
  1. <view wx:for="{{re}}" wx:key="re">

  2. <view style='color:#f00;'>{{item.result}}</view>

  3. <view style='color:green;'>{{item.title}}</view>

  4. </view>

wx:for="{{re}}"指的是循环数组,在js代码中,我们把所有服务端取得的数据,存进了re的数组

然后,{{item.result}}指的是服务端返回表单为空的结果。{{item.title}}返回的是搜索结果,这个结合你的数据库吧,你想展示什么结果,你就把title改成你数据库的相关字段。

  • 3
    点赞
  • 12
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
好的,实现一个基本的搜索功能需要前端和后端的配合。下面是一个简单的实现过程: 前端实现: 1. 在 HTML 中添加搜索框的输入框和搜索按钮: ```html <form> <input type="text" id="search-input" placeholder="请输入搜索内容"> <button type="submit" id="search-btn">搜索</button> </form> ``` 2. 使用 JavaScript 监听搜索按钮的点击事件,在点击时获取输入框中的搜索内容,并将内容发送给后端: ```javascript const searchBtn = document.getElementById('search-btn'); searchBtn.addEventListener('click', function(event) { event.preventDefault(); // 阻止表单默认提交事件 const searchInput = document.getElementById('search-input'); const searchContent = searchInput.value; // 发送搜索请求给后端 fetch(`/search?content=${searchContent}`) .then(response => response.json()) .then(data => { // 处理后端返回的搜索结果 }) .catch(error => console.error(error)); }); ``` 后端实现: 1. 在后端路由中添加搜索路由,处理前端发送的搜索请求: ```python from flask import Flask, request, jsonify app = Flask(__name__) @app.route('/search', methods=['GET']) def search(): search_content = request.args.get('content') # 在数据库中进行搜索 # 返回搜索结果 return jsonify(search_results) ``` 2. 在后端中连接数据库,实现具体的搜索功能。这里以使用 MySQL 数据库为例: ```python import mysql.connector db_config = { 'host': 'localhost', 'user': 'root', 'password': 'password', 'database': 'my_database' } cnx = mysql.connector.connect(**db_config) @app.route('/search', methods=['GET']) def search(): search_content = request.args.get('content') cursor = cnx.cursor() # 在数据库中进行搜索 query = "SELECT * FROM my_table WHERE content LIKE '%{}%'".format(search_content) cursor.execute(query) search_results = cursor.fetchall() cursor.close() # 返回搜索结果 return jsonify(search_results) ``` 以上就是一个简单的前后端配合实现搜索功能的过程。当然,实际应用中还需要考虑安全性、性能等问题。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值