• Ajax的使用


    Ajax简介

    AJAX = 异步 JavaScript 和 XML。

    AJAX 是一种用于创建快速动态网页的技术。

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

    传统的网页(不使用 AJAX)如果需要更新内容,必需重载整个网页面

    Ajax并不是一种新的技术:

    • 使用CSS和XHTML来表示
    • 使用DOM模型来交互和动态显示
    • 使用XMLHttpRequest来和服务器进行异步通信
    • 使用javascript来绑定和调用

    XMLHttpRequest

    XMLHttpRequest是 AJAX 的基础,用于在后台与服务器交换数据。这意味着可以在不重新加载整个网页的情况下,对网页的某部分进行更新

    Ajax使用

    创建XMLHttpRequest对象

    • Firefox, Opera 8.0+, Safari:new XMLHttpRequest();
    • Internet Explorer:new ActiveXObject("Msxml2.XMLHTTP");
    • 默认版本的XMLHTTP:new ActiveXObject("Microsoft.XMLHTTP");

    发送请求

    发送请求

    • open(method,url,async): 规定请求的类型、URL 以及是否异步处理请求
      • method:请求的类型;GET 或 POST 
      • url:文件在服务器上的位置 
      • async:true(异步)或 false(同步)
    • send(string): 将请求发送到服务器
      • string:仅用于 POST 请求(因为GET请求参数放在url里)

    接收响应并处理

    注册监听(onreadystatechange事件)

    请求被发送到服务器时,需要执行一些基于响应的任务。每当 readyState 改变时,就会触发 onreadystatechange 事件。readyState 属性存有 XMLHttpRequest 的状态信息

    属性描述
    onreadystatechange 存储函数(或函数名),每当 readyState 属性改变时,就会调用该函数。
    readyState

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

    • 0: 请求未初始化
    • 1: 服务器连接已建立
    • 2: 请求已接收
    • 3: 请求处理中
    • 4: 请求已完成,且响应已就绪
    status

    200: "OK"

    404: 未找到页面

    获得来自服务器的响应,需要 XMLHttpRequest 对象的 responseText 或 responseXML 属性

    responseText 获得字符串形式的响应数据
    responseXML 获得 XML 形式的响应数据。

    get方式请求

    web.xml

     1 <?xml version="1.0" encoding="UTF-8"?>
     2 <web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 
     3     xmlns="http://java.sun.com/xml/ns/javaee" 
     4     xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_3_0.xsd" 
     5     id="WebApp_ID" version="3.0">
     6   <display-name>AjaxDemo</display-name>
     7   <welcome-file-list>
     8     <welcome-file>index.jsp</welcome-file>
     9   </welcome-file-list>
    10   
    11  <servlet>
    12      <servlet-name>testServlet</servlet-name>
    13      <servlet-class>com.qf.servlet.TestServlet</servlet-class>
    14  </servlet>
    15  <servlet-mapping>
    16      <servlet-name>testServlet</servlet-name>
    17      <url-pattern>/testServlet</url-pattern>
    18  </servlet-mapping>
    19 </web-app>

    TestServlet.java

     1 public class TestServlet extends HttpServlet {
     2 
     3     @Override
     4     protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
     5 
     6         resp.setCharacterEncoding("utf-8");
     7 //        resp.setHeader("Content-Type", "text/html; charset=UTF-8");
     8         System.out.println("开始处理get请求!!!");
     9         resp.getWriter().write("get请求成功!!!");
    10     }
    11 }

    index.jsp

     1 <%@ page language="java" contentType="text/html; charset=UTF-8"
     2     pageEncoding="UTF-8"%>
     3 <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
     4 <html>
     5 <head>
     6 <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
     7 <title>Insert title here</title>
     8 </head>
     9 
    10 <script type="text/javascript">
    11     /* 创建XMLHttpRequest对象  */
    12     function createXmlHttpRequest() {
    13         var xmlHttp;
    14         try { // Firefox, Opera 8.0+, Safari
    15             xmlHttp = new XMLHttpRequest();
    16         } catch (e) {
    17             try {// Internet Explorer
    18                 xmlHttp = new ActiveXObject("Msxml2.XMLHTTP");
    19             } catch (e) {
    20                 try {
    21                     xmlHttp = new ActiveXObject("Microsoft.XMLHTTP");
    22                 } catch (e) {
    23 
    24                 }
    25             }
    26         }
    27 
    28         return xmlHttp;
    29     }
    30 
    31     function get() {
    32         //获取XMLHttpRequest对象
    33         var req = createXmlHttpRequest();
    34 
    35         /**
    36             发送请求
    37             open(method,url,async): 规定请求的类型、URL 以及是否异步处理请求
    38                 1.method:请求的类型;GET 或 POST 
    39                 2.url:文件在服务器上的位置 
    40                 3.async:true(异步)或 false(同步)
    41             send(string): 将请求发送到服务器
    42                 string:仅用于 POST 请求(因为GET请求参数放在url里)
    43          */
    44         req.open("GET", "testServlet?name=qf", true);
    45         
    46         /*
    47             在 onreadystatechange 事件中,规定当服务器响应已做好被处理的准备时所执行的任务
    48         */
    49         req.onreadystatechange = function() {
    50             if (req.readyState == 4 && req.status == 200) {
    51                 alert(req.responseText);
    52             }
    53 
    54         }
    55         //发送请求
    56         req.send();
    57     }
    58 </script>
    59 
    60 <body>
    61     <h3>
    62         <a href="#" onclick="get()">Ajax发送get请求</a>
    63     </h3>
    64 </body>
    65 </html>

    浏览器测试效果

    post方式请求

     TestServlet.java

     1 public class TestServlet extends HttpServlet {
     2 
     3     @Override
     4     protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
     5 
     6         resp.setCharacterEncoding("utf-8");
     7         String name = req.getParameter("name");
     8         System.out.println("开始处理get请求!!!"+name);
     9         resp.getWriter().write("get请求成功!!!");
    10     }
    11     
    12     @Override
    13     protected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
    14         resp.setCharacterEncoding("utf-8");
    15         String name = req.getParameter("name");
    16         System.out.println("开始处理post请求!!!"+name);
    17         resp.getWriter().write("post请求成功!!!");
    18     }
    19 }

    index.jsp

     1 <%@ page language="java" contentType="text/html; charset=UTF-8"
     2     pageEncoding="UTF-8"%>
     3 <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
     4 <html>
     5 <head>
     6 <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
     7 <title>Insert title here</title>
     8 </head>
     9 
    10 <script type="text/javascript">
    11     /* 创建XMLHttpRequest对象  */
    12     function createXmlHttpRequest() {
    13         var xmlHttp;
    14         try { // Firefox, Opera 8.0+, Safari
    15             xmlHttp = new XMLHttpRequest();
    16         } catch (e) {
    17             try {// Internet Explorer
    18                 xmlHttp = new ActiveXObject("Msxml2.XMLHTTP");
    19             } catch (e) {
    20                 try {
    21                     xmlHttp = new ActiveXObject("Microsoft.XMLHTTP");
    22                 } catch (e) {
    23 
    24                 }
    25             }
    26         }
    27 
    28         return xmlHttp;
    29     }
    30 
    31     function post() {
    32         //获取XMLHttpRequest对象
    33         var req = createXmlHttpRequest();
    34 
    35         /**
    36             发送请求
    37             open(method,url,async): 规定请求的类型、URL 以及是否异步处理请求
    38                 1.method:请求的类型;GET 或 POST 
    39                 2.url:文件在服务器上的位置 
    40                 3.async:true(异步)或 false(同步)
    41             send(string): 将请求发送到服务器
    42                 string:仅用于 POST 请求(因为GET请求参数放在url里)
    43          */
    44         req.open("POST", "testServlet", true);
    45         
    46         /*
    47             请求被发送到服务器时,需要执行一些基于响应的任务
    48         */
    49         
    50         req.onreadystatechange = function() {
    51             if (req.readyState == 4 && req.status == 200) {
    52                 alert(req.responseText);
    53             }
    54 
    55         }
    56         
    57         //如果使用的是post方式带数据,那么 这里要添加头, 说明提交的数据类型是一个经过url编码的form表单数据
    58         req.setRequestHeader("Content-type","application/x-www-form-urlencoded");
    59 
    60         //发送请求
    61         req.send("name=qf");
    62     }
    63 </script>
    64 
    65 <body>
    66     <h3>
    67         <a href="#" onclick="post()">Ajax发送post请求</a>
    68     </h3>
    69 </body>
    70 </html>

    注:

    如果使用的是post方式带数据,那么 这里要添加头, 说明提交的数据类型是一个经过url编码的form表单数据req.setRequestHeader("Content-type","application/x-www-form-urlencoded");

    浏览器测试效果

  • 相关阅读:
    内网安全隐藏通信隧道基础&&网络通信隧道之一ICMP隧道
    windows server2012 r2 .net framework 3.5失败
    awvas启动不起来解决方案
    Kali Linux解压包命令:
    kali linux 中python2不带pip的解决方法
    内网渗透信息收集
    团队作业(二):需求分析
    ORA00600: internal error code, arguments: [16513], [1403] 恢复
    helpyouhelpyou@cock.li 加密数据库恢复
    合成孔径雷达成像——算法与实现内容简要:第1章
  • 原文地址:https://www.cnblogs.com/qf123/p/10114440.html
Copyright © 2020-2023  润新知