Ajax实现简单的异步焦点事件


前言

当我们在使用各大搜索引擎的时候,我们向搜索框内输入字符就会出现一个下拉框,框中列举出了几条与我们输入字符有关的搜索,有些搜索可能正是我们想要搜索的,所以直接点击搜索就行了,非常方便。而这就是焦点事件产生的异步请求返回的结果。
下面我们就来简单的实现一下类似的效果。

一、前端

1. 引入JQuery

本次使用的是JQuery封装的ajax,直接用链接导入就行

<script src="https://cdn.bootcdn.net/ajax/libs/jquery/3.6.0/jquery.js"></script>

2. 前端代码实现

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Title</title>
    <script src="https://cdn.bootcdn.net/ajax/libs/jquery/3.6.0/jquery.js"></script>
    <script>
        function on(){
            $.ajax({
                type:"post",
                url:"http://localhost:8080/onblur",
                data: {input:$("#input").val()},
                success:function (data){
                    let s = '';
                    for (let i = 0; i < data.length; i++) {
                        s += "<p>"+data[i].toString()+"</p>"+"<br/>"
                    }
                    $("#hid").html(s);
                }
            })
        }
    </script>
</head>
<body>
    <input onblur="on()" id="input">
    <div style="color: green">
        <span id="hid"></span>
    </div>
</body>
</html>

其中input框中属性onblur的属性值表示失去焦点时使用的方法,当然也有一个属性onfocus的属性值表示在获得焦点时使用的方法。

二、后端

1. 处理请求

简单的用一个列表来实现“模糊查询”(打引号的)。
代码如下:

@RestController
public class AjaxDemoController {

    @RequestMapping("/on")
    public List<String> onblur(String input){
        if (!StringUtils.hasLength(input)){
            return null;
        }
        //准备的数据
        List<String> list = new ArrayList<>();
        list.add("学习学习学习");
        list.add("上学去");
        list.add("学习,学个屁");
        list.add("不要熬夜");

        //结果
        List<String> ret  = new ArrayList<>();
        //搞笑的模糊查询
        for (String s : list) {
            if (s.contains(input)){
                ret.add(s);
            }
        }
        return ret;
    }
}

2. 结果如下

在这里插入图片描述
可以看到当我们鼠标焦点还在输入框的时候,没有请求产生
在这里插入图片描述
当我们鼠标点击其他位置时,产生了一个请求,类型为xhr,xhr即XMLHttpRequest,是ajax功能实现所依赖的对象。

总结

本篇文章讲述了如何通过Ajax实现了一个简单的焦点事件,Ajax异步请求不仅仅可以使用在搜索框,也可以实现登录注册时的提示,上传图片的回显等,也让前后端分离实现也更加容易。

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值