zoukankan      html  css  js  c++  java
  • Ajax和JQueryAjax

    Ajax和JQueryAjax

    一、Ajax:

    1、Ajax 即“Asynchronous Javascript And XML“(异步 JavaScript 和 XML);

    2、是指一种创建交互式、快速动态网页应用的网页开发技术,无需重新加载整个网页的情况下,能够更新部分网页的技术。

    3、通过在后台与服务器进行少量数据交换,Ajax 可以使网页实现异步更新。这意味着可以在不重新加载整个网页的情况下,对网页的某部分进行更新。

    二、Ajax同步和异步(普遍)的区别:

    1、 同步处理:通过实践触发 ajax,请求服务器,在这个期间等待服务器处理请求, 在这个期间客户端不能做任何处理。当 ajax 执行完毕才会继续执行其他代码。

    
    
    同步:提交请求->等待服务器处理->处理完毕返回 这个期间客户端浏览器不能干任何事。
     

    2、异步处理:通过事件触发到 ajax,请求服务器,在这个期间无论服务器有没有响应,客户端的其他代码一样可以运行。

    异步: 请求通过事件触发->服务器处理(这是浏览器仍然可以作其他事情)->处理完毕同步需要等待返回结果才能继续,异步不必等待,一般需要监听异步的结果。
    *ps:同步是在一条直线上的队列,异步不在一个队列上 各走各的

    三、Ajax与JQueryAjax的实例:

    (判断用户名是否存在)

    1、Servlet:

    创建UserServlet:

    package com.javaboy.ajax.servlet;
    
    import javax.servlet.ServletException;
    import javax.servlet.http.HttpServlet;
    import javax.servlet.http.HttpServletRequest;
    import javax.servlet.http.HttpServletResponse;
    import java.io.IOException;
    import java.io.PrintWriter;
    
    public class UserServlet extends HttpServlet {
    
        @Override
        protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
            String username=req.getParameter("username");
            //省略从dao层查询username的过程,假定数据库中含有admin用户
            PrintWriter out= resp.getWriter();//输出流
            //信息不会直接打印在浏览器上,信息会被xmlHttpRequest抓取
            //true:该用户已存在
            //false:该用户可注册
            if ("admin".equals(username)){
                System.out.println("此用户已存在");
                out.write("true");
            }else{
                System.out.println("此用户可注册");
                out.write("false");
            }
        }
    
        @Override
        protected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
            doGet(req,resp);
        }
    }

    2、Ajax的实例应用:

    <!DOCTYPE html>
    <html lang="en">
    <head>
        <meta charset="UTF-8">
        <title>javascript ajax test</title>
    </head>
    <body>
        用户名:<input type="text" name="username" value="" onblur="validateUsername()" id="username"><br/>
        <script>
            function validateUsername() {
                var username=document.getElementById("username").value;
                alert(username);
    
                //ajax 纯javascript实现
                //xmlHttpRequest  异步引擎
                //1.创建xmlHttpRequst
                var xmlHttpRequest=new XMLHttpRequest();
                //2.建立连接   默认是异步
                xmlHttpRequest.open("GET","userServlet?username="+username,true);
    
                //3.发送请求
                xmlHttpRequest.send();
    
                //4.接受响应结果,并处理结果  该函数会自动触发
                xmlHttpRequest.onreadystatechange=function () {
                    if(xmlHttpRequest.readyState==4 && xmlHttpRequest.status==200){
                        var result=xmlHttpRequest.responseText;
                        alert("result:"+result);
                        if(result=="true"){
                            alert("该用户已存在,请重新录入");
                        }else{
                            alert("该用户可注册");
                        }
                    }
                }
            }
        </script>
    </body>
    </html>
    *ps:
        1、"GET":为要使用的HTTP方法 POST PUT DELETE等……
        2、"true":表示是否异步执行操作,默认为异步(true);
        3、XMLHttpRequest 对象的三个重要的属性:
    属性 描述
    onreadystatechange 存储函数(或函数名),每当 readyState 属性改变时,就会调用该函数。
    readyState

    存有 XMLHttpRequest 的状态。从 0 到 4 发生变化。

    · 0: (请求未初始化) send方法还没有被调用

    · 1: (服务器连接已建立,加载中) 已调用了send方法,请求还在处理

    · 2: (请求已接收, 已加载) send方法已完成,整个应答已接收

    · 3: (请求处理中, 交互中) 正在解析应答

    · 4: (请求已完成,且响应已就绪) 应答已经解析,准备好进行下一步处理。

    status 200: "OK" 404: 未找到页面
    
    
      4、当 readyState 等于 4 且状态为 200 时,表示响应已就绪

    3、JQueryAjax的实例应用:

    <!DOCTYPE html>
    <html lang="en">
    <head>
        <meta charset="UTF-8">
        <title>javascript ajax test</title>
    
    </head>
    <body>
    用户名:<input type="text" name="username" value="" onblur="validateUsername()" id="username"><span id="idSpan"></span><br/>
    <script type="text/javascript" src="js/jquery-3.3.1.js"></script>
    <script type="text/javascript">
        function validateUsername() {
            var username = $("#username").val();
            $.ajax({
                url: "userServlet",// 请求路径
                type: "GET",//请求方式
                dataType: "text",//设置接受到的响应数据的格式
                data: "username=" + username,//请求参数 或{"username":"jack","age":23}
                success: function (result) {
                    //alert("result:" + result);
                    if (result == "true") {
                       /* alert("该用户已存在,请重新录入");*/
                        $("#idSpan").html("该用户已存在,请重新录入").css("color","red");
                    } else {
                       // alert("该用户可注册");
                        $("#idSpan").html("该用户可注册").css("color","green");
    
                    }
                },//响应成功后的回调函数
                error: function () {
                    //500 404
                    alert("服务器内部错误!");
                }//设置接受到的响应数据的格式
            });
        }
    </script>
    </body>
    </html>
  • 相关阅读:
    [kuangbin带你飞]专题十六 KMP & 扩展KMP & ManacherK
    [kuangbin带你飞]专题十六 KMP & 扩展KMP & Manacher J
    [kuangbin带你飞]专题十六 KMP & 扩展KMP & Manacher I
    pat 1065 A+B and C (64bit)(20 分)(大数, Java)
    pat 1069 The Black Hole of Numbers(20 分)
    pat 1077 Kuchiguse(20 分) (字典树)
    pat 1084 Broken Keyboard(20 分)
    pat 1092 To Buy or Not to Buy(20 分)
    pat 1046 Shortest Distance(20 分) (线段树)
    pat 1042 Shuffling Machine(20 分)
  • 原文地址:https://www.cnblogs.com/javacyq/p/13861360.html
Copyright © 2011-2022 走看看