ajax应用_ajax应用 csdn-程序员宅基地

技术标签: 前端  ajax  

ajax应用

一、异步校验用户名是否存在

1.需求:

用户名是否存在.png

2.代码:

JQ代码:

<script type="text/javascript">
    $(function(){

        //为输入框绑定事件
        $("#username").blur(function(){
            //1、失去焦点获得输入框的内容
            var usernameInput = $(this).val();
            //2、去服务端校验该用户名是否存在---ajax
            $.post(
                "${pageContext.request.contextPath}/checkUsername",
                {"username":usernameInput},
                function(data){
                    var isExist = data.isExist;
                    //3、根据返回的isExist动态的显示信息
                    var usernameInfo = "";
                    if(isExist){
                        //该用户存在
                        usernameInfo = "该用户名已经存在";
                        $("#usernameInfo").css("color","red");
                    }else{
                        usernameInfo = "该用户可以使用"
                        $("#usernameInfo").css("color","green");
                    }
                    $("#usernameInfo").html(usernameInfo);

                },
                "json"
            );

        });

    });
</script>

HTML代码:

<label for="username" class="col-sm-2 control-label">用户名</label>
<div class="col-sm-6">
    <input type="text" class="form-control" id="username"
        placeholder="请输入用户名">
    <span id="usernameInfo"></span>
</div>

服务端代码:

public class CheckUsernameServlet extends HttpServlet {

    protected void doGet(HttpServletRequest request, HttpServletResponse response)
            throws ServletException, IOException {

        //获得要校验的用户名
        String username = request.getParameter("username");

        //传递username到service
        UserService service = new UserService();
        boolean isExist = false;
        try {
            isExist = service.checkUsername(username);
        } catch (SQLException e) {
            e.printStackTrace();
        }

        response.getWriter().write("{\"isExist\":"+isExist+"}");

    }

    protected void doPost(HttpServletRequest request, HttpServletResponse response)
            throws ServletException, IOException {
        doGet(request, response);
    }
}

二、站内搜索

JS代码:

<!-- 完成异步搜索 -->
<script type="text/javascript">

    function overFn(obj){
        $(obj).css("background","#DBEAF9");
    }
    function outFn(obj){
        $(obj).css("background","#fff");
    }

    function clickFn(obj){
        $("#search").val($(obj).html());
        $("#showDiv").css("display","none");
    }


    function searchWord(obj){
        //1、获得输入框的输入的内容
        var word = $(obj).val();
        //2、根据输入框的内容去数据库中模糊查询---List<Product>
        var content = "";
        $.post(
            "${pageContext.request.contextPath}/searchWord",
            {"word":word},
            function(data){
                //3、将返回的商品的名称 显示在showDiv中
                //[{"pid":"1","pname":"小米 4c 官方版","market_price":8999.0,"shop_price":8999.0,"pimage":"products/1/c_0033.jpg","pdate":"2016-08-14","is_hot":1,"pdesc":"小米 4c 标准版 全网通 白色 移动联通电信4G手机 双卡双待 官方好好","pflag":0,"cid":"1"}]

                if(data.length>0){
                    for(var i=0;i<data.length;i++){
                        content+="<div style='padding:5px;cursor:pointer' onclick='clickFn(this)' onmouseover='overFn(this)' onmouseout='outFn(this)'>"+data[i]+"</div>";
                    }
                    $("#showDiv").html(content);
                    $("#showDiv").css("display","block");
                }

            },
            "json"
        );

    }
</script>

HTML代码:

<form class="navbar-form navbar-right" role="search">
    <div class="form-group" style="position:relative">
        <input id="search" type="text" class="form-control" placeholder="Search" onkeyup="searchWord(this)">
        <div id="showDiv" style="display:none; position:absolute;z-index:1000;background:#fff; width:179px;border:1px solid #ccc;">

        </div>
    </div>
    <button type="submit" class="btn btn-default">Submit</button>
</form>

服务端代码:

public class SearchWordServlet extends HttpServlet {

    protected void doGet(HttpServletRequest request, HttpServletResponse response)
            throws ServletException, IOException {

        //获得关键字
        String word = request.getParameter("word");

        //查询该关键字的所有商品
        ProductService service = new ProductService();
        List<Object> productList = null;
        try {
            productList = service.findProductByWord(word);
        } catch (SQLException e) {
            e.printStackTrace();
        }

        //["xiaomi","huawei",""...]

        //使用json的转换工具将对象或集合转成json格式的字符串
        /*JSONArray fromObject = JSONArray.fromObject(productList);
        String string = fromObject.toString();
        System.out.println(string);*/

        Gson gson = new Gson();
        String json = gson.toJson(productList);
        System.out.println(json);

        response.setContentType("text/html;charset=UTF-8");

        response.getWriter().write(json);


    }

    protected void doPost(HttpServletRequest request, HttpServletResponse response)
            throws ServletException, IOException {

        doGet(request, response);

    }
版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://blog.csdn.net/CSDN_GIA/article/details/70344837

智能推荐

python 协程库gevent学习 -- 超时、互斥锁(BoundedSemaphore)、local_python gevent.lock-程序员宅基地

文章浏览阅读3.8k次。当其他greenlet去访问它的时候是无法访问到的,它只在自己的greenlet的命名空间中有效。这里Mylocal继承了gevent的local,这里重点介绍一下__slots__在这里的用法,我们知道在常规的类里面指定__slots__的意思往往是只允许该类下的属性只允许有__slots__里面这些,超出的就会报出Attribute error的错误。但是继承了local的__slots__在这里却是指,申明了的属性将会穿透所有greenlet变成一个全局可读的,并不再是线程本地的,这里注意下。_python gevent.lock

【nginx】如何解决使用nginx作为反向代理端口耗尽问题?_连接数过多导致nginx服务器端口数不足-程序员宅基地

文章浏览阅读2.4k次。TCP 长连接负载均衡问题(10W 用户) ----- TCP 长连接 ----- Nginx/HAproxy/LVS(软件负载) ------ TCP 长连接 ----- (实际业务,多台业务服务器)客户端 TCP 10W 长连接到 Nginx/HAproxy 这一步,没有问题。软件负载到实际业务这里,由于负载均衡(nginx) 是采用转发的方式进行处理的,本地会创建连接,当转发超出 65535 时,(nginx)就不能建立长连接了。Linux 系统调优参数基本已经设置过了,应该不是这_连接数过多导致nginx服务器端口数不足

html的tab页面切换刷新,切换tab页,页面局部刷新,地址栏路径修改-程序员宅基地

文章浏览阅读2.1k次。需求:做一个类似百度这种,切换tab,页面展示局部刷新的效果。思路:tab展示的切换,使用display控制。但是,如果页面刷新,则无法保留显示在tab2的效果,因而在地址栏加参数标记。但如果用a的href或者location.href 均会将整个页面刷新,体验很差,故需只修改地址栏路径,但不刷新页面。解决方案:在切换tab时,先处理隐藏显示区域的内容,再将地址栏的内容改掉,如下:window.h..._html tab 刷新

事后诸葛亮-程序员宅基地

文章浏览阅读44次。参考各个小组的评论和总结队友的意见:### ‘简阅’ 在beta阶段需要改进的地方1.字体大小不合适,需要调整2.欢迎界面的背景比较模糊,需要更换3.在用户向下滑动阅读时,标题可以变小或者隐藏4.加入收藏,分享等功能5.文章来源需要改进,数量不够6.兴趣标签比较少,分类不够仔细,可以考虑改进### 团队的分工协作现在的分工情况还是很理想的,所以应该不会有人员的调整..._字体设计事后诸葛亮

webpack打包原理 ? 看完这篇你就懂了 !_webpack打包原理说的通俗易懂-程序员宅基地

文章浏览阅读3.9k次,点赞12次,收藏126次。前言[实践系列] 主要是让我们通过实践去加深对一些原理的理解。[实践系列]前端路由[实践系列]Babel 原理[实践系列]实践这一次,彻底搞懂浏览器缓存机制[实践系列]你能手写一个 Promise 吗?Yes I promise。有兴趣的同学可以关注[实践系列]。 求 star 求 follow~本文通过实现一个简单 webpack,来理解它的打包原理,看完不懂直接..._webpack打包原理说的通俗易懂

Unity让一辆越野车沿着指定路径自动行驶(非手动操作)

通过wheelCollider组件让汽车沿着指定路径行驶,到达翻山越岭的操作,这里的汽车并非手动驾驶而是自动驾驶

随便推点

Java基于注解实现日志记录模块,超详细注释!_java如何使用注解记录日志-程序员宅基地

文章浏览阅读810次,点赞15次,收藏17次。在项目开发过程中,日志记录是一个至关重要的环节,它能够帮助开发人员追踪用户的重要操作,如新增、删除、修改等,从而有效监控系统的运行状态。通过日志记录,我们可以深入了解系统的运行情况,及时发现并解决问题,优化性能,提高用户体验。_java如何使用注解记录日志

Cisco 构建小型局域网络(三层交换机和路由器、ospf 动态路由配置)_思科中小型企业网络拓扑图及配置-程序员宅基地

文章浏览阅读1.2w次,点赞31次,收藏264次。一、实训内容:架构分析(1)需求分析本实验的目的在于建立小型局域网。由于公司由不同部门组成,并分布在不同地点,因此需要划分不同网络实现互联互通。设计以下网络:两个部门各使用一台交换机连接,然后连接到总交换机,再通过路由器与外网以及其他部门网络相连。为了控制网络上的广播风暴,增加网络的安全性,在交换机上需要设置VLAN,在路由器与交换机之间需要设置动态路由OSPF协议。(2)环境要求Cisco模拟器规划拓扑(1)拓扑描述地点1包括部门1和部门2;地点2包括部门3。部门1网络为子网3:172_思科中小型企业网络拓扑图及配置

vlan的学习笔记2(vlan间通信)

R1使用一个物理接口(GE0/0/1)与交换机SW1对接,并基于该物理接口创建两个子接口:GE0/0/1.10及GE0/0/1.20,分别使用这两个子接口作为VLAN 10及VLAN 20的默认网关。在二层交换机上配置VLAN,每个VLAN单独使用一个交换机接口与路由器互联。路由器使用两个物理接口,分别作为VLAN 10及VLAN 20内PC的默认网关,使用路由器的物理接口实现VLAN之间的通信。:1.路由器的一个物理接口作为一个VLAN的网关,因此存在一个VLAN就需要占用一个路由器物理接口。

SpringBoot相关知识点总结

总的来说,`@SpringBootApplication` 注解标记了一个类作为 Spring Boot 应用程序的主类,并启用了 Spring Boot 的自动配置机制和组件扫描机制,简化了应用程序的配置和启动过程,提高了开发效率。:Spring Boot Starters 遵循 Spring Boot 的约定优于配置的设计原则,通过预定义好的依赖项和配置,简化了应用程序的配置过程,使得开发者可以更专注于业务逻辑的实现,而无需过多地关注底层技术细节。这样的配置类通常会被。

什么时候用List、Set或Map(Java中的集合框架体系)_业务开发什么时候使用list-程序员宅基地

文章浏览阅读2.3k次,点赞15次,收藏42次。集合框架体系集合是Java中提供的一种容器,可以用来存储多个数据;而由于存储的方式不同,就形成了很多不同的体系结构,统称为集合框架体系。归为两大类 : Conllection 和 Map Collection List ArrayList 1、排序有序,可重复 2、底层使用数组 3、查询快......_业务开发什么时候使用list

高频面试题:Java程序占用 CPU 过高怎么排查,2024年最新高级java开发工程师面试题-程序员宅基地

文章浏览阅读726次,点赞12次,收藏19次。在面试前我整理归纳了一些面试学习资料,文中结合我的朋友同学面试美团滴滴这类大厂的资料及案例由于篇幅限制,文档的详解资料太全面,细节内容太多,所以只把部分知识点截图出来粗略的介绍,每个小节点里面都有更细化的内容!大家看完有什么不懂的可以在下方留言讨论也可以关注。网上学习资料一大堆,但如果学到的知识不成体系,遇到问题时只是浅尝辄止,不再深入研究,那么很难做到真正的技术提升。需要这份系统化的资料的朋友,可以添加V获取:vip1024b (备注Java)一个人可以走的很快,但一群人才能走的更远!

推荐文章

热门文章

相关标签