• Jquery实现Ajax(一)


    一、$.ajax()方法实现Ajax

      是jQuery最底层的实现,书写简洁,又不乏灵活性

      下面直接来一段Ajax的代码,模拟从数据获取多个宠物信息的场景

    <%@ page language="java" contentType="text/html; charset=UTF-8"
        pageEncoding="UTF-8"%>
    <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
    <html>
    <head>
    <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
    <title>使用$.ajax()方法实现Ajax</title>
    <style type="text/css">
    div{
    margin-top:10px;
    margin-bottom:10px;
    }
    </style>
    </head>
    <body>
    <div><input type="text" placeholder="请输入要发送到后台的值" id="flag"></div>
    <input type="submit" value="显示所有宠物信息" id="showButton">
    <div >
    <h3 style="230px;border:1px red dashed;padding:5px;display:none;" align="left">后台拥有的宠物信息如下</h3>
    <table border="1" id="petShow">
    <tr><td>宠物类别</td><td>宠物昵称</td><td>宠物年龄</td></tr>
    </table>
    </div>
    <script type="text/javascript" src="js/jquery-1.12.4.js"></script>
    <script type="text/javascript">
        $("#showButton").click(function(){
            var flag=$("#flag").val();
            $.ajax({
                "url"        :"petServlet",//发送请求的地址
                "type"        :"POST",//发送什么请求,
                "data"        :"opr="+flag,//请求中携带的数据
                "dataType"    :"JSON",//服务器返回数据的类型
                 "beforeSend":function(){//发送请求前调用的函数
                    alert("Ajax发送请求前函数被触发!");
                    $("h3").css("display","block");
                }, 
                "success"    :callBack,//请求成功后调用的函数
                 "error"        :function(){//请求失败后调用的函数
                    alert("获取宠物信息失败!");
                }, 
                 "complete"    :function(){//请求完成后调用的数据,不论成功与否
                    alert("Ajax请求已完成!");
                } 
            })
            function callBack(data){
                alert("返回请求数据");
                $("#petShow").empty();
                $("#petShow").append("<tr><td>宠物类别</td><td>宠物昵称</td><td>宠物年龄</td></tr>");
                $petJson=$(data);
                $petJson.each(function(i){
                    $("#petShow").append("<tr><td>"+$petJson[i].strain+"</td><td>"+$petJson[i].nick+"</td><td>"+$petJson[i].age+"</td></tr>")
                })
            }
        })
    </script>
    </body>
    </html>

    二、$.get()实现Ajax

      如果要发送GET请求,在jQuery中提供了更简洁的代码来实现相应的效果

    <%@ page language="java" contentType="text/html; charset=UTF-8"
        pageEncoding="UTF-8"%>
    <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
    <html>
    <head>
    
    <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
    <title>使用$.get()方法实现Ajax</title>
    <style type="text/css">
    div{
    margin-top:10px;
    margin-bottom:10px;
    }
    </style>
    </head>
    <body>
    <div><input type="text" value="nihao" id="flag"></div>
    <input type="submit" value="显示所有宠物信息" id="showButton">
    <div>
    <h3 style="230px;border:1px red dashed;padding:5px;display:none;" align="left">后台拥有的宠物信息如下</h3>
    <table border="1" id="petShow">
    <tr><td>宠物类别</td><td>宠物昵称</td><td>宠物年龄</td></tr>
    </table>
    </div>
    <script type="text/javascript" src="js/jquery-1.12.4.js"></script>
    <script type="text/javascript">
        $("#showButton").click(function(){
            var flag=$("#flag").val();
            //$.get()方法实现Ajax
             $.get("petServlet","opr="+flag,callBack,"JSON"); 
              //设置回调函数
            function callBack(data){
                alert("返回请求数据");
                $("#petShow").empty();
                $("#petShow").append("<tr><td>宠物类别</td><td>宠物昵称</td><td>宠物年龄</td></tr>");
                $petJson=$(data);
                $petJson.each(function(i){
                    $("#petShow").append("<tr><td>"+$petJson[i].strain+"</td><td>"+$petJson[i].nick+"</td><td>"+$petJson[i].age+"</td></tr>")
                })
            }
             /* $.get()方法等价于
                 $.ajax({
                 "url"        :"petServlet",
                 "data"        :"opr="+flag,
                 "type"        :"GET",
                 "dataType"    :"JSON",
                 "success"    :callBack
             });*/
              
        })
    </script>
    </body>
    </html>

    三、$.post()方法实现Ajax请求

      如果要发送POST请求,那么以下代码可以实现上述效果

    <%@ page language="java" contentType="text/html; charset=UTF-8"
        pageEncoding="UTF-8"%>
    <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
    <html>
    <head>
    <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
    <title>使用$.post()方法实现Ajax</title>
    <style type="text/css">
    div{
    margin-top:10px;
    margin-bottom:10px;
    }
    </style>
    </head>
    <body>
    <div><input type="text" placeholder="请输入要发送到后台的值" id="flag"></div>
    <input type="submit" value="显示所有宠物信息" id="showButton">
    <div>
    <h3 style="230px;border:1px red dashed;padding:5px;display:none;" align="left">后台拥有的宠物信息如下</h3>
    <table border="1" id="petShow">
    <tr><td>宠物类别</td><td>宠物昵称</td><td>宠物年龄</td></tr>
    </table>
    </div>
    <script type="text/javascript" src="js/jquery-1.12.4.js"></script>
    <script type="text/javascript">
        $("#showButton").click(function(){
            var flag=$("#flag").val();
            //$.post()方法实现Ajax
             $.post("petServlet","opr="+flag,callBack,"JSON"); 
              //设置回调函数
            function callBack(data){
                alert("返回请求数据");
                $("#petShow").empty();
                $("#petShow").append("<tr><td>宠物类别</td><td>宠物昵称</td><td>宠物年龄</td></tr>");
                $petJson=$(data);
                $petJson.each(function(i){
                    $("#petShow").append("<tr><td>"+$petJson[i].strain+"</td><td>"+$petJson[i].nick+"</td><td>"+$petJson[i].age+"</td></tr>")
                })
            }
             /* $.post()方法等价于
                 $.ajax({
                 "url"        :"petServlet",
                 "data"        :"opr="+flag,
                 "type"        :"POST",
                 "dataType"    :"JSON",
                 "success"    :callBack
             });*/
              
        })
    </script>
    </body>
    </html>

    四、$getJSON()方法实现Ajax

      顾名思义,这是个用于Ajax发送GET请求,并且从服务器来返回JSON格式数据的方法

    <%@ page language="java" contentType="text/html; charset=UTF-8"
        pageEncoding="UTF-8"%>
    <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
    <html>
    <head>
    <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
    <title>使用$.getJSON()方法实现Ajax</title>
    <style type="text/css">
    div{
    margin-top:10px;
    margin-bottom:10px;
    }
    </style>
    </head>
    <body>
    <div><input type="text" placeholder="请输入要发送到后台的值" id="flag"></div>
    <input type="submit" value="显示所有宠物信息" id="showButton">
    <div>
    <h3 style="230px;border:1px red dashed;padding:5px;display:none;" align="left">后台拥有的宠物信息如下</h3>
    <table border="1" id="petShow">
    <tr><td>宠物类别</td><td>宠物昵称</td><td>宠物年龄</td></tr>
    </table>
    </div>
    <script type="text/javascript" src="js/jquery-1.12.4.js"></script>
    <script type="text/javascript">
        $("#showButton").click(function(){
            var flag=$("#flag").val();
            //$.getJSON()方法实现Ajax
             $.getJSON("petServlet","opr="+flag,callBack); 
              //设置回调函数
            function callBack(data){
                alert("返回请求数据");
                $("#petShow").empty();
                $("#petShow").append("<tr><td>宠物类别</td><td>宠物昵称</td><td>宠物年龄</td></tr>");
                $petJson=$(data);
                $petJson.each(function(i){
                    $("#petShow").append("<tr><td>"+$petJson[i].strain+"</td><td>"+$petJson[i].nick+"</td><td>"+$petJson[i].age+"</td></tr>")
                })
            }
             /* $.getJSON()方法等价于
                 $.ajax({
                 "url"        :"petServlet",
                 "data"        :"opr="+flag,
                 "type"        :"GET",
                 "dataType"    :"JSON",
                 "success"    :callBack
             });*/
              
        })
    </script>
    </body>
    </html>

    五、下面展示一下以上Ajax访问的servle页面

    package com.vic.controller;
    
    import java.io.IOException;
    import java.io.PrintWriter;
    import java.util.ArrayList;
    import java.util.List;
    
    import javax.servlet.ServletException;
    import javax.servlet.annotation.WebServlet;
    import javax.servlet.http.HttpServlet;
    import javax.servlet.http.HttpServletRequest;
    import javax.servlet.http.HttpServletResponse;
    
    import com.google.gson.Gson;
    import com.vic.entity.Pet;
    @WebServlet("/petServlet")
    public class PetServlet extends HttpServlet {
    
        @Override
        protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
            System.out.println("进入了doGet方法");
            doPost(req, resp);
        }
    
        @Override
        protected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
            System.out.println("执行doPost方法");
            String opr=req.getParameter("opr");//获得Ajax携带的数据
            System.out.println(opr);//打印接收到的参数到控制台
            /**
             * 模拟后台数据
             */
            List<Pet> pets=new ArrayList<Pet>();
            Pet pet1=new Pet("牧羊犬", "小黑", 2);
            Pet pet2=new Pet("波斯猫", "小花", 1);
            Pet pet3=new Pet("北极熊", "小白", 3);
            
            pets.add(pet1);
            pets.add(pet2);
            pets.add(pet3);
            //将数据转换为json格式
            Gson gson=new Gson();
            String json=gson.toJson(pets);
            System.out.println(json);//打印json里的内容到控制台
            //设置返回编码
            resp.setHeader("Content-type", "text/html;charset=utf-8");
            //将数据返回到前台
            PrintWriter out=resp.getWriter();
            out.println(json);
            out.flush();
            out.close();
        }
    }
  • 相关阅读:
    IM设计思考:XMPP多用户文本聊天协议(MUC:Multi User Chat)
    软件设计中的“三视图”
    [C++] 应该如何应对OOM?
    Android 上Camera分析
    android的语言切换应用程序 根据 不同的语言 加载不同的 res
    布局
    布局
    如何解决"Launching New_configuration"问题
    android的语言切换应用程序 根据 不同的语言 加载不同的 res
    如何解决"Launching New_configuration"问题
  • 原文地址:https://www.cnblogs.com/vic_/p/8241069.html
Copyright © 2020-2023  润新知