ajax实时监控input搜索框并给提示词的事实举例的超全版本(上-不用字典树)

前言

感觉前面直接放概念和字典树还是差了点,有的看了概念还是没有思路的,于是写这篇文章来举例子,首先这不不包含字典树的版本,用字典树的版本等下会发。

需要的技术

jsp和ajax简单的理解,做示例的后端框架是springmvc(老项目了,但其实仅举例一个方法都差不多)

预计目标

我们现在有这样一个搜索框,里面可以输入单词句子,点击搜索,在跳转页面给出反馈,但是因为有时候用户也不确定整体句子,于是我们预计在这里增加一个模糊搜索给予提示,比如实时:
用户输入“j”,那就应该把包含“j”的语句列出来,因为篇幅有限,所以我们可以限制limit 5,这样给出提示又不会显得太臃肿。
在这里插入图片描述
然后想实现这样子(显然不美观,不过后面的代码也并不实现这个,我会新开一个页面)
在这里插入图片描述
其实实际用例可能还会考虑大小写通查,阿拉伯数字和中文数字转换的问题,但这个例子并不考虑那么多,如图这是实例的数据,我们要提示的数据就是question问题部分。
在这里插入图片描述

代码

从前端开始展示

<!DOCTYPE html>
<html lang="en" xmlns:th="http://www.w3.org/1999/xhtml">
<head>
    <meta charset="UTF-8">
    <script src="https://code.jquery.com/jquery-3.6.0.min.js"></script>
    <script>
        $(document).ready(function() {
            var timeoutId;

            $('#searchInput').on('input', function() {
                clearTimeout(timeoutId);
                var query = $(this).val();

                timeoutId = setTimeout(function() {
                    $.ajax({
                        url: '/tishi',
                        type: 'GET',
                        data: { name: query },
                        success: function(response) {
                            var html = '';
                            $.each(response, function(index, question) {
                                html += '<li class="scrolltext-title"><a>' + question.question + '</a></li>';
                            });
                            $('#feedback').html(html);
                        },
                        error: function(error) {
                            console.error('An error occurred:', error);
                        }
                    });
                }, 300);
            });
        });
    </script>
</head>
<body>
<form id="searchForm">
    <input type="text" id="searchInput" placeholder="输入搜索内容">
    <div id="feedback">
    </div>
</form>
</body>
</html>

部分重点我讲一下,有着急需求的看到这边就行了,替换你的词,然后直接套用即可

1,监听

 $('#searchInput').on('input', function() {

这个代码就是监听你的搜索框,也就是这个

<input type="text" id="searchInput" placeholder="输入搜索内容">

#加上id就是确定监听的框体,这样在框内发生变化时,就会触发这个函数。

2,跳转

$.ajax({
	url: '/tishi',
	type: 'GET',
    data: { name: query },

url就是需要跳转的方法,通常应该加上@ResponseBody注解,返回一个json数据,来方便我们后续代码获取数据,并对指定数据块进行刷新。
data这块就是你跳转后传递的值,可以理解为类似:

?name=query

我的后端方法是这样的

    @RequestMapping("tishi")
    @ResponseBody
    public List<SentenceQuestion> tishi(@RequestParam("name") String query) {
        if(query!=""){
            return sentenceQuestionMapper.selectByQ(query);
        }
            return sentenceQuestionMapper.selectByQ("999");
    }

有点简陋,这边建立一个判断是为了防止查空,即全表查一遍,不存redis的情况下对数据库负担还是蛮大的。
query在前面有提到过

var query = $(this).val();

就是获取搜索框内的值,没什么可说的。

3,函数体

var html = '';
$.each(response, function(index, question) {
 html += '<li class="scrolltext-title"><a>' + question.question + '</a></li>';});
$('#feedback').html(html);

这个可以理解为一个拼接网站,可以看到我要刷新的div是空的,也就是在ajax完成操作,后端返回数据后,这个函数会把得到的数据做拼接,放在这里。
参考上面函数,我的mapping是这样的:
在这里插入图片描述
返回的List数据结构,用foreach循环遍历每个SentenceQuestion对象,我们只需要取名字(question属性),用“对象名.”的方式调用即可。
可以看到已经完成了这个效果
在这里插入图片描述

最后

可以根据自身需要增加点击跳转功能,毕竟已经做了对象回传,增加一个查对象id的跳转方式就可以了,然后跳转到新页面(非本页跳转)的同时给输入框中覆写上点进去的question,这样已经基本把搜索功能完善了。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/802772.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

物流智能锁在物流锁控中的应用设计方案

一、案例介绍与问题剖析 &#xff08;一&#xff09;案例概述 某知名物流企业&#xff0c;拥有广泛的运输网络和多样化的客户群体&#xff0c;涵盖了制造业、零售业等多个领域。然而&#xff0c;随着业务规模的不断扩大&#xff0c;其在货物锁控方面遇到了一系列棘手的问题。…

Java | Leetcode Java题解之第238题除自身以外数组的乘积

题目&#xff1a; 题解&#xff1a; class Solution {public int[] productExceptSelf(int[] nums) {int length nums.length;// L 和 R 分别表示左右两侧的乘积列表int[] L new int[length];int[] R new int[length];int[] answer new int[length];// L[i] 为索引 i 左侧…

[C++] 深度剖析C_C++内存管理机制

文章目录 内存分布内存分布图解 C语言中动态内存管理方式malloc:callocrealloc C内存管理方式内置类型**自定义类型** operator new & operator deleteoperator new & operator delete函数operator newoperator delete **new T[N]** 与**delete[]** **定位new表达式(pl…

JavaScript基础(十四)

函数 很多人一看到这两个字就头大&#xff0c;可能由于多年被数学摧残有不小阴影&#xff0c;放心&#xff0c;我们这里的函数不是那些东西&#xff0c;在编程中我们的函数指的是: 程序的基本单元&#xff0c;是完成特定任务的代码语句块。 我们在写程序时&#xff0c;可能会…

【保姆级】Python项目部署到Linux生产环境(uwsgi+python+flask+nginx服务器)

1.安装python 我这里是3.9.5版本 安装依赖&#xff1a; yum install zlib-devel bzip2-devel openssl-devel ncurses-devel sqlite-devel readline-devel tk-devel gcc make -y 根据自己的需要下载对应的python版本&#xff1a; cd /usr/local wget https://www.python.or…

springboot机场投诉管理平台-计算机毕业设计源码22030

摘要 随着航空运输业的迅速发展&#xff0c;机场的客流量不断增加&#xff0c;旅客对机场服务的质量和效率也提出了更高的要求。为了提高机场的服务质量&#xff0c;及时处理旅客的投诉&#xff0c;建立一个高效、便捷的机场投诉管理平台显得尤为重要。 本项目旨在设计与实现一…

# ffmpeg 工具使用

文章目录 ffmpeg 工具使用1.图片转换2.图片转视频3.截取片段4. 视频格式转换5. 视频转图片方法一&#xff1a;方法二&#xff1a;生成更清晰无压缩的图片方式&#xff1a; ffmpeg 工具使用 windows安装教程&#xff1a;https://blog.csdn.net/csdn_yudong/article/details/129…

Python一对一辅导答疑|Rust 德国

你好&#xff0c;我是悦创。 下面是答疑内容。 在 Rust 中&#xff0c;方法的调用方式通常取决于它们是如何定义的。在你的例子中&#xff0c;print_drink方法最初是作为一个接受Drink类型实例作为参数的关联函数&#xff08;类似于静态方法&#xff09;定义的。后来&#xff…

紫外测熔融实验结果温度和abs作折线图和求一阶导最大值

import numpy as np import pandas as pd from pyecharts.charts import Line from pyecharts import options as opts from matplotlib import pyplot as plt import xlrd # 读取 csv 文件 data pd.read_excel(F:/LJX/lc8.xls)# 假设 csv 文件中有两列数据&#xff1a;x 和 y…

[transformer] Attention is all you need

1、目的 提出一种新的网络结构&#xff0c;不用CNN或者RNN&#xff0c;只基于self-attention 2、方法 * Norm: Layer Normalization 1&#xff09;Encoder -> -> self-attention的k、v、q来自上一个encoder层 2&#xff09;Decoder -> 由于每个位置i的预测只能参考i…

跨境电商与TikTok达人带货:未来合作模式与市场机遇

随着全球社交媒体技术的不断进步和消费者行为的持续变化&#xff0c;跨境电商与TikTok达人合作的模式正展现出前所未有的多元化和专业化趋势。这种合作不仅推动了品牌的国际化进程&#xff0c;也为消费者带来了更加丰富和个性化的购物体验。本文Nox聚星将和大家探讨未来跨境电商…

php反序列化--1--PHP序列化

目录 一、什么是php序列化&#xff1f; 二、在php中怎么进行序列化&#xff1f; 三、不同数据类型的序列化后的表达方式 1、空-NULL 2、整形 3、浮点型 4、boolean型 5、字符型 6、数组 7、对象序列化-公有修饰符 8、对象序列化-私有修饰符 9、对象序列化-保护修饰…

C++ 回溯算法

什么时候不需要startIndex? 全排列&#xff1a;1在[1,2]中已经使用过了&#xff0c;但是在[2,1]中还要在使用一次1&#xff0c;所以处理排列问题就不用使用startIndex了&#xff1b;电话号码的字母组合&#xff1a;如果是多个集合取组合&#xff0c;各个集合之间相互不影响&a…

景区导航导览系统:基于AR技术+VR技术的功能效益全面解析

在数字化时代背景下&#xff0c;游客对旅游体验的期望不断提升。游客们更倾向于使用手机作为旅行的贴身助手&#xff0c;不仅因为它能提供实时、精准的导航服务&#xff0c;更在于其融合AR&#xff08;增强现实&#xff09;、VR&#xff08;虚拟现实&#xff09;等前沿技术&…

汽车免拆诊断案例 | 卡罗拉急加速抖动故障排除

车型信息 2017年改款卡罗拉&#xff0c;排量1.2T&#xff0c;行驶里程48800公里。 故障现象 车辆不管在什么状态下&#xff0c;只要是平缓加速&#xff0c;都不会有抖动。车辆静止时&#xff0c;急加速时&#xff0c;也不会有抖动。但是车速达40公里/小时以上&#xff0c;急加…

SQL注入问题

一、什么是sql注入 public class TestSql {public static void main(String[] args) {Scanner inScanner new Scanner(System.in);System.out.println("请输入用户名");String username inScanner.nextLine();System.out.println("请输入密码");String …

python-区间内的真素数(赛氪OJ)

[题目描述] 找出正整数 M 和 N 之间&#xff08;N 不小于 M&#xff09;的所有真素数。真素数的定义&#xff1a;如果一个正整数 P 为素数&#xff0c;且其反序也为素数&#xff0c;那么 P 就为真素数。 例如&#xff0c;11&#xff0c;13 均为真素数&#xff0c;因为 11 的反序…

JuiceFS缓存特性

缓存 对于一个由对象存储和数据库组合驱动的文件系统&#xff0c;缓存是本地客户端与远端服务之间高效交互的重要纽带。读写的数据可以提前或者异步载入缓存&#xff0c;再由客户端在后台与远端服务交互执行异步上传或预取数据。相比直接与远端服务交互&#xff0c;采用缓存技…

vue3配置代理

vite.config.js中的内容&#xff1a; 在这里配置访问后台的地址 import { defineConfig } from vite import vue from vitejs/plugin-vueexport default defineConfig({plugins: [vue()],server: {open: false,port: 3000,proxy: {/api: {target: http://127.0.0.1:9001, // 后…

【论文阅读】MCTformer+:弱监督语义分割的多类令牌转换器

【论文阅读】MCTformer:弱监督语义分割的多类令牌转换器 文章目录 【论文阅读】MCTformer:弱监督语义分割的多类令牌转换器一、介绍1.1 WSSS背景1.2 WSSS策略 二、联系工作2.1 弱监督语义分割2.2 transformers的可视化应用 三、MULTI-CLASS TOKEN TRANSFORMER3.1 Multi-class t…