Promise再回首-- 再深入点了解异步编程

本文介绍了AJAX的基本概念及其如何解决传统网页刷新问题,通过浏览器API实现与服务器的异步数据交换,提高用户体验。同时,详细讲解了AJAX的使用步骤及代理请求对象的五个状态,对比GET与POST请求的差异。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

写在前面:
     之前的学习总是很松散,没有去做总结,也没有对所学的知识点进行梳理,这就造成了学习效率偏低的情况,对知识点的掌握总是很浅层次的了解而已,所以接下来的学习我想我可以通过博客记录的学习方式,完善自身,对知识点加深理解.

  • 对ajax的简单认识

    早期的web应用程序的主要目的是为了可以让服务器的信息在网页上得以呈现.
    一般常用的方式就是使用浏览器在地址栏输入地址,然后创建与服务器的连接,获取服务器的数据.

    这种交互方式就意味着如果用户需要对页面的部分数据进行刷新时,
    亦或者进行一些表单处理时,需要刷新整个页面,
    web开发人员也无法直接使用编程的方式对这种交互(浏览器客户端与服务端的请求与响应).

    AJAX就是为了解决上述问题而面世的,开发人员可以调用浏览器提供的API,
    对服务器发起请求,并且获取数据,而不是去刷新整个页面.

  • AJAX的简单使用

    通常使用ajax进行网络编程包括下面四个步骤

    • 创建一个代理请求对象(XMLHttpRequest对象),即需要一个媒介去访问服务器

    • 代理请求对象建立与服务器的连接

    • 通过连接向服务器发出请求

    • 对代理请求的状态变化进行处理

         //创建一个代理请求对象
         var obj=new XMLHttpRequest()
         //与服务器建立连接通道
         obj.open("GET","http://jsonplaceholder.typicode.com/users")
         //向服务器发出请求
         obj.send();
         //根据代理对象的状态响应进行相应的处理
         obj.onreadystatechange=function(){
         if(obj.readyState==4){
           var res=obj.responseText;
           console.log(res);
             }
         }
    
  • 代理对象的五个状态(readystate)
    onreadychange事件的触发是因为代理对象的readystate的变化而产生,所以我将梳理一下代理对象进行数据交换时的五个状态值

    readystate说明
    0代理已经被创建,但是没有建立连接(open)
    1代理已经通过open方法建立了连接
    2send()方法已经被调用,并且返回了状态行和响应头
    3响应体正在下载中,即响应体中包含了部分数据
    4响应体已经下载完毕

    上述的状态如果发生变化将会触发onreadystate事件,我们通常在readyState=4的时候,去获取响应体,此时响应体已经下载完毕.

  • GET请求与POST请求

    GET传递参数时可以使用url直接传递参数
    obj.open("GET","http://jsonplaceholder.typicode.com/users?id=1")

    POST传递参数时,不能直接使用url传递参数,需要把想传递的参数作为send()方法的参数.
    并且如果传递的参数的格式不同,也需要设置不同的请求头,以便于服务器去解析.
    比如
    1.使用post请求且传递参数为urlencoded格式

             obj.open("POST","http://jsonplaceholder.typicode.com/users")
             obj.setRequestHeader("conten-Type","application/x-www-form-urlencoded")
             obj.send("id=1")
    

    2.使用post请求且传递参数为json格式

            obj.open("POST","http://jsonplaceholder.typicode.com/users")
            obj.setRequestHeader("conten-Type","application/json)
            obj.send('"id"=1')
    

    测试网址好像不支持post方式

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值