首页 > 其他分享 >Ajax

Ajax

时间:2023-09-23 20:44:24浏览次数:24  
标签:请求 响应 Ajax xhr ajax new

一、简介

Ajax(Asynchronous Javascript And XML)是由浏览器解析运行的基于JavaScript实现的网页局部刷新的技术。

实现了在当前网页中显示新的响应内容。(不会覆盖掉原有内容)

特点:

  1. 一种新的让浏览器发起http请求的技术

  2. 使用ajax发起的请求,响应结果不会自动的覆盖原有内容,而是可以在原有页面内容上继续显示

  3. Ajax是一门基于JavaScript的技术,由浏览器解析运行,所以是一种前端(客户端)技术

  4. 简单易用

二、使用

基本流程

//1.创建ajax请求对象,该对象可以向服务端发起请求
        var xhr = new XMLHttpRequest();
        //2.开启连接
        xhr.open("get", "testServlet");
        //3.发起请求
        xhr.send();
        //4.监听就绪状态的变化,就绪状态发生变化会被监听,自动调用指定的function
        xhr.onreadystatechange = function (ev) {
        //处理数据
    }        

1. Ajax的就绪状态(readState)

在ajax对象中提供了一个监听机制 “onreadystatechange”,用来监听ajax的属性readyState的改变情况,一旦该值改变,就会触发监听中的函数的执行。

 xhr.onreadystatechange = function (ev) {
      console.log(xhr.readState);    
    }

readyState的值表示的含义:

  • 0:请求没有开启(在调用open()之前)

  • 1:请求已经建立但是还没有发出(调用send()之前)

  • 2:请求已经发出,服务器正在处理

  • 3:请求已经处理,响应中有数据可用,但是服务器还没有完全响应完

  • 4:响应已经完成,浏览器已经接收到全部的响应内容

2. Ajax请求的响应状态

处理响应结果要考虑服务器响应是否成功,即响应状态码为200时对响应数据进行处理

xhr.onreadystatechange = function (ev) {
          if(xhr.readyState==4 && xhr.status==200){
            //console.log(xhr);
            //获取响应的数据
            var responseText = xhr.responseText;
            console.log(responseText);
          }
        };

三、同步/异步 请求

同步请求:

  • 发送请求后,一直等待服务端的响应,获取到服务端响应,再执行其他的逻辑代码。

    • 浏览器直接发起

      • 在浏览器地址栏输入url,发起请求

      • 使用超链接,发起请求

      • 使用form表单,发起请求

      • 在js代码中使用window.location.href,发起请求

    • ajax发起同步请求,有xhr对象发起请求

      • ajax与其他方式发送同步请求的区别: ajax可以局部刷新(由xhr对象发送请求),其他的请求方式会刷新整张页面

异步请求:

  • 发送请求后,不需要等待服务端的响应,继续按照顺序执行其他逻辑代码,监听到响应,自动调用指定的方法。

    ajax发起异步请求

1. Ajax设置同步/异步

xhr对象的open()方法的第三个参数  async:是否为异步请求

true:异步

false:同步

四、Ajax请求携带参数

1. get请求

get请求可以直接在请求路径拼接参数

xhr.open("get","HelloServlet?name=lucy&age=18");

2. post请求

Ajax的post请求传递参数是需要单独写在send方法中,而且需要设置请求头,该请求头表示此次请求是以表单的方式提交

<script>
    function f() {
      var xhr = new XMLHttpRequest();
      xhr.open("get","HelloServlet");
      //请求方式是post请求,则需要设置请求头,这个请求头就表示是以表单方式提交数据
      xhr.setRequestHeader("Content-Type", "application/x-www-form-urlencoded");
      xhr.send("name=lily&age=15");
      xhr.onreadystatechange = function (ev) {
        if(xhr.readyState==4 && xhr.status==200){}
      };
      }
</script>

五、Ajax请求响应的数据格式及处理

ajax可以接收requestText(文本类型)和Xml类型(不常用了)

如果需要接收对象或者一个集合就需要使用JSON数据格式

1. JSON

JSON是一种特殊格式的字符串

例:

普通Java对象的json字符串格式:

User user = new User(1, "张三丰", 18, "北京");

{"id":1, "name":"张三丰", "age": 18, "address":"北京"}

Map集合对应的json字符串格式:

Map<String, Object> map = new HashMap<>();
map.put("key1", "value1");
map.put("key2", "value2");

{"key1":"value1", "key2":"value2"}

List集合对应的json字符串格式:

List<User> list = new ArrayList<>();
list.add(new User(1, "赵敏", 18, "北京"));
list.add(new User(2, "周芷若", 28, "上海"));

   [
    {"id":1, "name":"赵敏", "age":18, "address":"北京"},
    {"id":2, "name":"周芷若", "age":28, "address":"上海"}
   ]

这种格式符合js对象的声明格式,通过JSON.parse(str)解析后就得到了js对象

 

标签:请求,响应,Ajax,xhr,ajax,new
From: https://www.cnblogs.com/giaogiaoyang/p/17725024.html

相关文章

  • struts2与ajax交互
    实现动态检验用户是否在数据库中存在. 一:JSP页面<scripttype="text/javascript"src="JS/Ajax.js"<scripttype="text/javascript">functionif(value!=""){"get","check?usersName="+value,deal,null);}......
  • ajax的使用方法
    实例$.ajax({url:'https://api.example.com/data',method:'GET',async:true,//使用异步请求success:function(response){//处理成功的响应数据console.log(response);},error:function(xhr,status,error){//处理请求失败con......
  • jQuery与Ajax:“特别的”load()方法(筛选文档、传递方法、回调函数)
    “大名鼎鼎的”jQuery因为其极简的引用方式而在N年前备受追捧,而今“浪潮”过去,还剩下什么?我认识jQuery,只是在去年接触ajax时了解,从而感兴趣,进而深入探究(其实也没多深入,只是相关的看了一下)。不得不说,jQuery对ajax支持的四个type:post(一般用于发送)、get(一般常用于接收)、put(修改)、dele......
  • Ajax 跨域报错 python后端处理
    Ajax跨域报错python后端处理个人项目,前端接口用Ajax写的,python后端部署在另一台电脑上,发出以下报错:查询很久发现是因为前端向后端发送请求时,会预先发送一个OPTION的请求,然后请求通过之后才能够发送这个POST的请求。具体原因还是没有理解,只知道这个大概,有理解的可以评论区......
  • ajax 请求后台连接中断
          日常开发中,当表单中的参数有url类的跳转链接时,即使有部分特殊字符,一般也不会有问题,但总会有例外,导致提交表单的时候,ajax会中断,     机制大佬A: URL中包含双引号,编码后提交到后端,后端在解码后不会对字符串中的双引号加反斜杠进行转义,导致JSON反序列......
  • Fetch和ajax之间的区别
    Fetch和ajax之间的区别fetchFetchAPI是基于Promise设计的Fetch内置了对JSON数据的解析支持,我们只需要调用response.json()方法,可以直接获得返回的JSON数据。语法简洁,更加语义化原生支持率不高,可以用polyfill兼容IE8+浏览器ajax是理用XMLHttpRequest对象来请求数据的,而fetc......
  • Ajax 和 axios 调用接口的使用
     一、前提了解:服务器:负责存放和对外提供资源的电脑‘请求-处理-响应’客户端:在上网过程中,负责获取和消费资源的电脑URL:统一资源定位符,协议域名端口号资源的请求方式: 1.get:获取服务器资源 2.post:向服务器提交数据 3.其他:put修改、delete删除、fetch批量二、Ajax的......
  • ajax下载二进制文件(导出Excel)
    varurl='http://127.0.0.1'; varxhr=newXMLHttpRequest(); xhr.open('GET',url,true);//也可以使用POST方式,根据接口 xhr.responseType="blob";//返回类型blob //定义请求完成的处理函数,请求前也可以增加加载框/禁用下载按钮逻辑 xhr.o......
  • fastAdmin框架ajax选项框实现
    效果:实现:1.引入 2.函数 3.html代码 ......
  • Promise 封装 Ajax
    Ajax请求是前端使用频率最高的功能之一,虽然现在有各种各样的工具库能够实现快速简洁的调用Ajax接口,但是在一些特定项目中,我们可能就是需要使用原生Ajax来发送请求。今天我们就来尝试着使用Promise封装一下原生Ajax,改善其回调冗长的问题。封装封装的主要思路就是:如果成......