Javascript中的ajax

  当初面试html5前端工程师,被一家上市软件公司的技术面试官提过一个问题。

  原生js中ajax是基于什么对象?

  我当初用的比较熟练的是jQuery框架,我当时只知道用jquery中的$ajax()方法调用,而真是不知道原生的ajax是基于什么对象,我思考了一会儿,也老实的回答了面试官的问题,我说:“这个我真的不知道,回去我在仔细看看!”

  然后就谦虚的问面试官,ajax是基于什么对象,他也耐心的给我回到了,说是:“xhr:----xmlhttpRequest然后就给我耐心的解释,这个名字我有点印象,当时听得还是有些模糊,后来回去就仔细的看了一下原生js中的ajax到底是什么鬼?(IE5 和 IE6 使用 ActiveXObject)

var xmlhttp;
if (window.XMLHttpRequest)
  {// code for IE7+, Firefox, Chrome, Opera, Safari
  xmlhttp=new XMLHttpRequest();//也就是要new一个对象,这个是核心,记住。
  }
else
  {// code for IE6, IE5
  xmlhttp=new ActiveXObject("Microsoft.XMLHTTP");
  }

  后来我还是被这家公司给录用了,这个咋们先不谈,还是先谈谈ajax是什么?

  我想大家应该都知道,弹幕这个概念吧,举个最简单的例子,比如lol直播,上面会弹出好多的用户发表的观点,这就是ajax的异步加载,其目的在于“不刷新、不跳转”页面的情况下通过服务器请求异步完成。

  这样可以降低服务器的负载,减少用户等待时间,加快响应速度。

  而ajax的核心了,xmlhttpRequest,简称xhr(小黄人),这个东西名字一大堆,到底是个什么鬼呢?

  其实很好理解,咋们把它拆开,xml指的是可扩展标记语言,和json类似,json是一种文件的格式,这个要是你不知道,赶紧去百度。

  http,大家肯定熟悉,等会后面会重点说它。Request,也就是请求。

  ajax就是先是通过http向服务器发送请求,然后得到服务器的响应,然后得到回馈。这句话很重要,请大家记住,接下来说的更重要,请大家也要记住,不懂得就百度。

 一个Http请求一般由四部分组成。

 1、http请求的方法或动作,比如是get还是post

 2、正在请求URL(可以使json文件)总得知道请求的地址是什么吧

 3、请求头,包含一些客户端环境信息,身份验证信息等

 4、请求体,也就是请求正文,请求正文中可以包含客户提交的查询字符串信息,表单信息等等。

 请求完了之后,就会得到http响应,一个http响应一般由三部分组成。

 1、一个数字和父子组成的状态码,用来请求是成功还是失败

 2、响应头也和请求头一样,包含许多有用的信息,例如服务器类型,日期时间,内容类型和长度等。

 3、响应体,也就是响应正文。


 function ajax() {
10 
11           //先声明一个异步请求对象,判断兼容
12           var xmlHttpReg = null;
13           if (window.ActiveXObject) {//如果是IE
14 
15               xmlHttpReg = new ActiveXObject("Microsoft.XMLHTTP");
16 
17           } else if (window.XMLHttpRequest) {
18 
19               xmlHttpReg = new XMLHttpRequest(); //实例化一个xmlHttpReg
20           }
21 
22           //如果实例化成功,就调用open()方法,就开始准备向服务器发送请求,
23           if (xmlHttpReg != null) {
24               xmlHttpReg.open("get", "About.aspx", true);1
25                xmlHttpReg.send(null);
26               xmlHttpReg.onreadystatechange = doResult; //设置回调函数
27              //  open()和send()是xhr对象中的一个方法。详细的可以去百度一下
28           }
29 
30           //回调函数
31           //一旦readyState的值改变,将会调用这个函数,readyState=4表示完成相应
32 
33           //设定函数doResult()
34           function doResult() {
35           // 这段代码可能对于初学者理解起来可能有点困难,可以百度去看下
readyState和status,当它们值等于4和200时,表示执行完成和成功,不懂得可以话可以强行记下来。
36 if (xmlHttpReg.readyState == 4) {//4代表执行完成37 38 39 if (xmlHttpReg.status == 200) {//200代表执行成功40 //将xmlHttpReg.responseText的值赋给ID为resText的元素41 document.getElementById("resText").innerHTML =
xmlHttpReg.responseText;
//responseText也是基于对象下的一种方法,获得字符串形成的响应数据。
42                       43 44                   }45               }46 47           }48         49 50       }


  

  


  

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值