zoukankan      html  css  js  c++  java
  • ajax发送异步请求——GET方式

    首先,我们新建一个和web项目,然后新建一个servlet我,我们命名为AServlt,然后写入如下代码:

     1 package cn.cuibusi.servlet;
     2 
     3 import javax.servlet.ServletException;
     4 import javax.servlet.annotation.WebServlet;
     5 import javax.servlet.http.HttpServlet;
     6 import javax.servlet.http.HttpServletRequest;
     7 import javax.servlet.http.HttpServletResponse;
     8 import java.io.IOException;
     9 
    10 /**
    11  * Created by cuibusi on 2017/4/20.
    12  */
    13 @WebServlet("/AServlet")
    14 public class AServlet extends HttpServlet {
    15     protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
    16         System.out.println("Hello AJAX");
    17         response.getWriter().print("Hello AJAX!!!");
    18     }
    19 }

    然后,我们的服务器端就建立完毕了。

    我们再新建一个jsp页面,命名为ajaxdemo.jsp,加入一个按钮和一个h1标签,意图是在我们点击按钮时发送异步请求,然后通过h1标签来显示服务器端发回来的消息:

    1   <body>
    2   <button id="btn">点击这里</button>
    3   <h1 id="h1"></h1>
    4   </body>

    接下来就是我们核心的js代码,代码如下,步骤都在注释里:

     1 <script type="text/javascript">
     2         // 创建异步对象
     3         function createXMLHttpRequest() {
     4             try {
     5                 return new XMLHttpRequest();//大多数浏览器
     6             } catch (e) {
     7                 try {
     8                     return ActvieXObject("Msxml2.XMLHTTP");//IE6.0
     9                 } catch (e) {
    10                     try {
    11                         return ActvieXObject("Microsoft.XMLHTTP");//IE5.5及更早版本
    12                     } catch (e) {
    13                         alert("哥们儿,您用的是什么浏览器啊?");
    14                         throw e;
    15                     }
    16                 }
    17             }
    18         }
    19 
    20         window.onload = function() {//文档加载完毕后执行
    21             var btn = document.getElementById("btn");
    22             btn.onclick = function() {//给按钮的点击事件注册监听
    23               /*
    24                ajax四步操作,得到服务器的响应
    25                把响应结果显示到h1元素中
    26                */
    27               /*
    28                1. 得到异步对象
    29                */
    30                 var xmlHttp = createXMLHttpRequest();
    31               /*
    32                2. 打开与服务器的连接
    33                * 指定请求方式
    34                * 指定请求的URL
    35                * 指定是否为异步请求
    36                */
    37                 xmlHttp.open("GET", "<c:url value='/AServlet'/>", true);
    38               /*
    39                3. 发送请求
    40                */
    41                 xmlHttp.send(null);//GET请求没有请求体,但也要给出null,不然FireFox可能会不能发送!
    42               /*
    43                4. 给异步对象的onreadystatechange事件注册监听器
    44                */
    45                 xmlHttp.onreadystatechange = function() {//当xmlHttp的状态发生变化时执行
    46                     // 双重判断:xmlHttp的状态为4(服务器响应结束),以及服务器响应的状态码为200(响应成功)
    47                     if(xmlHttp.readyState == 4 && xmlHttp.status == 200) {
    48                         // 获取服务器的响应结束
    49                         var text = xmlHttp.responseText;
    50                         // 获取h1元素
    51                         var h1 = document.getElementById("h1");
    52                         h1.innerHTML = text;
    53                     }
    54                 };
    55             };
    56         };
    57     </script>

    最后,我们来看一下运行效果:

  • 相关阅读:
    bzoj 3709: [PA2014]Bohater【贪心】
    bzoj 3714: [PA2014]Kuglarz【最小生成树】
    bzoj 2216: [Poi2011]Lightning Conductor【决策单调性dp+分治】
    bzoj 2087: [Poi2010]Sheep【凸包+极角排序+dp】
    bzoj 3830: [Poi2014]Freight【dp】
    bzoj 3930: [CQOI2015]选数【快速幂+容斥】
    bzoj 1717: [Usaco2006 Dec]Milk Patterns 产奶的模式【后缀自动机】
    bzoj 1614: [Usaco2007 Jan]Telephone Lines架设电话线【二分+spfa】
    bzoj 1640||1692: [Usaco2007 Dec]队列变换【后缀数组】
    bzoj 1612: [Usaco2008 Jan]Cow Contest奶牛的比赛【Floyd】
  • 原文地址:https://www.cnblogs.com/cuibin/p/6739993.html
Copyright © 2011-2022 走看看