ajax原理与底层实现

Ajax是什么

我理解Ajax(Asynchronous JavaScript and XML(异步的 JavaScript 和 XML)) 是一种异步请求数据的一种技术,是在不重新加载整个页面的情况下,与服务器交换数据并更新部分网页的技术,对于改善用户的体验和程序的性能很有帮助。

Ajax过程:

(1)、创建XMLHttpResquest对象,也就是创建一个异步调用对象

(2)、创建一个新的HTTP请求,并确定该HTTP请求的方法(post/getURL(文件在服务器上的位置,相对位置或绝对位置async(ture异步/false不异步

(3)、设置响应`HTTP`请求状态变化的函数。

(4)、发送HTTP请求

(5)、获取异步调用返回的数据

(6)、使用JS和DOM实现页面局部刷新

//创建XMLHttpResquest对象
var xmlHttp = new XMLHttpRequest();   

//创建一个Http请求,(method,url,async)
xmlHttp.open('GET','demo.php','true'); 
    
//发送Http请求 
xmlHttp.send();


//当async为false时数据处理
document.getElementById("mydiv").innerHTML=xmlhttp.responseText;


//异步时,没有得到服务器响应的情况下,防止代码停止的方法。 (同步不需要设置此方法
//当异步时,即async为ture时数据处理,接收到服务端响应时触发
 xmlhttp.onreadystatechange=function () {
      if(xmlhttp.readyState==4&&xmlhttp.status==200){
            document.getElementById("mydiv").innerHTML=xmlhttp.responseText;
       }else{
            //没有响应的代码
       }
 }

PS:

1、open 的参数要牢记,很多面试官爱问这样的细节

  • method:请求的类型;GET 或 POST
  • url:文件在服务器上的位置,相对位置或绝对位置
  • async:true(异步)或 false(同步)

         为什么使用 Async=true ?我们的实例在 open() 的第三个参数中使用了 "true"。该参数规定请求是否异步处理。

        True 表示脚本会在 send() 方法之后继续执行,而不等待来自服务器的响应。所以就需要onreadystatechange 事件来实现在没有得到服务器响应的情况下,防止代码停止的方法。

        若该参数设置为 "false",可以省去额外的 onreadystatechange 代码,因为我们没有异步处理。如果在请求失败时是否执行其余的代码无关紧要,那么可以使用这个参数

2、post与get的不同

send(string)方法post请求时才使用字符串参数,否则不用带参数

3、post请求一定要设置请求头的格式内容

xmlhttp.open("POST","ajax_test.html",true);
xmlhttp.setRequestHeader("content-type","application/x-www-form-urlencoded");
xmlhttp.send("fname=Herry&lname=Ford");

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

DiuDiu_yang

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值