首页 > 其他分享 >AJAX

AJAX

时间:2023-06-21 10:23:03浏览次数:42  
标签:浏览器 请求 AJAX xhttp ajax 页面

1. 概述

AJAX​​ (Asynchronous JavaScript And XML):异步的 JavaScript 和 XML。

我们先来说概念中的JavaScript​ 和 XML

  • JavaScript​ 表明该技术和前端相关;

  • XML​ 是指以此进行数据交换。

1.1 作用

AJAX 作用有以下两方面:

  1. 与服务器进行数据交换:通过 AJAX 可以给服务器发送请求,服务器将数据直接响应回给浏览器。如下图

我们先来看之前做功能的流程,如下图:

​​image​​

如上图,Servlet​​ 调用完业务逻辑层后将数据存储到域对象中,然后跳转到指定的 jsp​​ 页面,在页面上使用 EL表达式​​ 和 JSTL​​ 标签库进行数据的展示。

而我们学习了 AJAX 后,就可以使用 AJAX 和服务器进行通信,以达到使用 HTML+AJAX 来替换 JSP 页面了​。如下图,浏览器发送请求 servlet,servlet 调用完业务逻辑层后将数据直接响应回给浏览器页面,页面使用 HTML 来进行数据展示。

​​image​​

  1. 异步交互:可以在不重新加载整个页面的情况下,与服务器交换数据并更新部分网页的技术,如:搜索联想、用户名是否可用校验,等等…

​​image

上图所示的效果我们经常见到,在我们输入一些关键字(例如 奥运​)后就会在下面联想出相关的内容,而联想出来的这部分数据肯定是存储在百度的服务器上,而我们并没有看出页面重新刷新,这就是 更新局部页面 的效果。再如下图:

​​image

我们在用户名的输入框输入用户名,当输入框一失去焦点,如果用户名已经被占用就会在下方展示提示的信息;在这整个过程中也没有页面的刷新,只是在局部展示出了提示信息,这就是 更新局部页面 的效果。

1.2 同步和异步

知道了局部刷新后,接下来我们再聊聊同步和异步:

  • 同步发送请求过程如下

​​image​​

浏览器页面在发送请求给服务器,在服务器处理请求的过程中,浏览器页面不能做其他的操作。只能等到服务器响应结束后才能,浏览器页面才能继续做其他的操作。

  • 异步发送请求过程如下
    ​​image
    浏览器页面发送请求给服务器,在服务器处理请求的过程中,浏览器页面还可以做其他的操作。

2. 快速入门

2.1 服务端实现

在项目的创建com.north.web.servlet​ ,并在该包下创建名为 AjaxServlet​ 的 servlet

@WebServlet("/ajaxServlet")
public class AjaxServlet extends HttpServlet {
    @Override
    protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
        //1. 响应数据
        response.getWriter().write("hello ajax~");
    }

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

2.2 客户端实现

webapp​ 下创建名为 01-ajax-demo1.html​ 的页面,在该页面书写 ajax​ 代码

  • 创建核心对象,不同的浏览器创建的对象是不同的

     var xhttp;
    if (window.XMLHttpRequest) {
        xhttp = new XMLHttpRequest();
    } else {
        // code for IE6, IE5
        xhttp = new ActiveXObject("Microsoft.XMLHTTP");
    }
    
  • 发送请求

    //建立连接
    xhttp.open("GET", "http://localhost:8080/ajax-demo/ajaxServlet");
    //发送请求
    xhttp.send();
    
  • 获取响应

    xhttp.onreadystatechange = function() {
        if (this.readyState == 4 && this.status == 200) {
            // 通过 this.responseText 可以获取到服务端响应的数据
            alert(this.responseText);
        }
    };
    

完整代码如下:

<!DOCTYPE html>
<html lang="en">
  <head>
       
    <meta charset="UTF-8" />
       
    <title>Title</title>
  </head>
  <body>
    <script>
      //1. 创建核心对象
      var xhttp;
      if (window.XMLHttpRequest) {
        xhttp = new XMLHttpRequest();
      } else {
        // code for IE6, IE5
        xhttp = new ActiveXObject("Microsoft.XMLHTTP");
      } //2. 发送请求
      xhttp.open("GET", "http://localhost:8080/ajax-demo/ajaxServlet");
      xhttp.send(); //3. 获取响应

      xhttp.onreadystatechange = function () {
        if (this.readyState == 4 && this.status == 200) {
          alert(this.responseText);
        }
      };
    </script>
  </body>
</html>

2.3 测试

在浏览器地址栏输入http://localhost:8080/ajax-demo/01-ajax-demo1.html​ ,在 01-ajax-demo1.html​ 加载的时候就会发送 ajax​ 请求,效果如下

​​image​​

我们可以通过开发者模式​ 查看发送的 AJAX 请求。在浏览器上按 F12​ 快捷键

​​image​​

标签:浏览器,请求,AJAX,xhttp,ajax,页面
From: https://www.cnblogs.com/NorthPoet/p/17495567.html

相关文章

  • AJAX常用知识点及应用
    一、概念相关AsyncJavaScriptAndXML是JS通过异步方式啦获取响应并且局部更新页面二、XHLHttpRequest【在AJAX中被大量使用】是一个API,挂在window上。为客户端提供了在客户端和服务器之间进行数据传输的功能通过URL来获取数据,并且不会使页面整个刷新三、原生JS-------......
  • AJAX实现基于WEB的文件上传的进度控制保存草稿
    AJAX实现基于WEB的文件上传的进度控制 作者:liuzuochen 1.引言2.代码实现2.1.服务器端代码2.1.1.文件上传状态类(FileUploadStatus)2.1.2.文件上传状态侦听类(FileUploadListener)2.1.3.后台服务类(BackGroundService)2.1.4.文件上传状态控制类(Bea......
  • ajax请求springboot
    老是忘记ajax请求格式,记录一下吧后面看自己的functionsave(){varURL="/reconciliation/wzglWzMaterilApplicationDetail/saveSupplier";varcc=JSON.stringify({data:"world",p:{pag:0,pageS......
  • Ajax 交流文档
    Ajax交流文档BacktoDocumentationIndex使用Ajax的主要原因通过适当的Ajax应用达到更好的用户体验。把以前的一些服务器负担的工作转嫁到客户端,利于客户端闲置的处理能力来处理,减轻服务器和带宽的负担,从而达到节约ISP的空间及带宽租用成本的目的。引用Ajax这个概念的最早......
  • ajax + java 实现类似网易邮箱邮件地址自动完成功能
    ajax+java实现类似网易邮箱邮件地址自动完成功能2008-04-0218:30********************************************************************源代码下载链接:http://www.javaeye.com/topic/150778***************************************************************......
  • ajax之post请求application/x-www-form-urlencoded传参的解决方案
    ​ 在使用ajax进行参数获取时,始终获取不到参数,但是调用postman可以正常接收参数,所以初步推测是参数格式不正确,那么正确的格式应该怎么写呢?一般按照正常的逻辑,我们在传递application/x-www-form-urlencoded时,参数应该这样写,但实际操作中发现一直获取不到参数。ajax.create(......
  • Ajax-hook之百度图片测试
    /*Ajax-hook是一种比较实用的技术,它可以自定义XMLHttpRequest中的方法和属性,覆盖全局的XMLHttpRequest。当网站在使用Ajax请求动态渲染时,开发者可以对其中的请求参数和响应数据进行任意修改和展示,有些类似前面讲过的本地覆盖,区别是这里会去调用原本的XMLHttpRequest。*///......
  • Qt+QtWebApp开发笔记(五):http服务器html中使用json触发ajax与后台交互实现数据更新传递
    前言  前面完成了页面的跳转、登录,很多时候不刷新页面就想刷新局部数据,此时ajax就是此种技术,且是异步的。  本篇实现网页内部使用js调用ajax实现异步交互数据。  在js中使用ajax是通过XMLHttpRequest来实现的。下载地址  链接:https://pan.baidu.com/s/1tJMTPhIIyVE40......
  • J2EE下使用AJAX(二) Prototype封装
    需提前下载prototype.js并置于自己的项目中,本例实现的功能与上例类似,Prototype对XMLHttpRequest进行了封装,我们可以使用较为简单的方式发送请求。2.1Servlet实际上与上例的Servlet完全一样。内容如下:packagelld.test.ajax;importjava.io.IOException;import......
  • J2EE下使用AJAX(一) 最原始的AJAX (转)
    新一篇: J2EE下使用AJAX(二)Prototype封装本方法不借助于任何的框架及开源项目,体现AJAX在J2EE中的实现如下功能,由页面向服务器发出请求,返回一个字符串,客户端页面显示该字符串。1.1Servlet响应客户端请求的Servlet类为一普通的Servlet,关键在于使用了ServletOutputStream控制......