让你脱口而出的 AJAX(一)

1.1 AJAX

    AJAX 即Asynchronous Javascript And XML,它不是一门的新的语言,而是对现有持术的综合利用。
    1. 基于web标签的xhtml+css
    2. 可以使用dom进行动态的显示和交互
    3. 使用XML和XSLT(是一种用于将XML文档转换任意文本的描述语言)进行数据的交换和操作
    4. 使用XMLHttpRequest进行异步的数据查询和检索等操作。。。
本质:  是在HTTP协议的基础上以异步的方式通过XMLHttpRequest对象与服务器进行通信。

作用:可以在页面不刷新的情况下,请求服务器,局部更新页面的数据;

1.2 异步

    指某段程序执行时不会阻塞其它程序执行,其表现形式为程序的执行顺序不依赖程序本身的书写顺序,相反则为同步。其优势在于不阻塞程序的执行,从而提升整体执行效率。
同步:同一时刻只能做一件事,上一步完成才能开始下一步
异步:同时做多件事,效率更高

XMLHttpRequest可以以异步方式的处理程序。

1.3 AJAX 发送GET 请求

// 1 创建异步对象
            var xhr = new XMLHttpRequest();
            // 2 设置 请求行 open(请求方式,请求url):
                // get请求如果有参数就需要在url后面拼接参数(?后面即传递的参数,以键值对形式,多个参数用 & 隔开)
            xhr.open("get","validate.php?username="+name);
            // 3 设置 请求头 setRequestHeader('key':'value')
                // get方式不需要设置请求头
            // 4 设置 请求体:发送请求  send(参数:key=value&key=value)
                // 对于 get请求不需要在这个位置来传递参数(因为参数已经拼接在url 后面了)
            xhr.send(null);
            // 一个真正成功的响应应该两个方面:1.服务器成功响应  2.数据已经回到客户端并且可以使用了
            // 监听异步对象的响应状态 readystate
                // 0:创建了异步对象,但是还没有真正的去发送请求
                // 1:调用了send方法,正在发送请求
                // 2:send方法执行完毕了,已经收到服务器的响应内容--原始内容,还不可以使用
                // 3:正在解析数据
                // 4:响应内容解析完毕,可以使用了
                // 当异步对象的响应状态发生改变的时候,会触发一个事件:onreadystatechange
            xhr.onreadystatechange = function(){
                if(xhr.status == 200 && xhr.readyState == 4){
                // 接收以json格式传递的数据
                  console.log(xhr.responseText); 
                // 接受以XML格式传递的数据
                  console.log(xhr.responseXML);  
                }
            }

1.3 AJAX 发送POST 请求

// 1 创建异步对象
            var xhr = new XMLHttpRequest();
            // 2 设置请求行 open(请求方式,请求url)
                // post请求不需要拼接参数
            xhr.open("post","validate.php");
            // 3 设置请求头:setRequestHeader()              
                // post需要设置请求头:Content-Type:application/x-www-form-urlencoded
            // xhr.setRequestHeader("Content-Type","application/x-www-form-urlencoded");如果没有设置,
            参数无法正确的传递到服务器(本质上说,如果没有参数,也不一定需要设置,不会影响请求的发送)
            // 4 设置请求体 send()
                // post的参数在这个函数中设置(如果有参数)
            xhr.send("username="+name);
            // 一个成功的响应有两个条件:1.服务器成功响应了  2.异步对象的响应状态为4(数据解析完毕可以使用了)
            // 当异步对象的响应状态发生改变的时候,会触发一个事件:onreadystatechange
            xhr.onreadystatechange = function(){
                // 判断服务器是否响应      判断异步对象的响应状态
                if(xhr.status == 200 && xhr.readyState == 4){
                    // 接收以json格式传递的数据
                  console.log(xhr.responseText); 
                // 接收以XML格式传递的数据
                  console.log(xhr.responseXML);  
                }
            

1.4 AJAX 中GET请求与POST请求的区别(面试经常会问)

    1、GET没有请求体,使用xhr.send(null)
    2、GET可以通过在URL上拼接请求参数
    3、POST可以通过xhr.send('name=itcast&age=10')设置请求参数
    4、POST需要设置Content-type:application/x-www-form-urlencoded
    5、GET大小限制约4K,POST则没有限制

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值