前端面试——Ajax

1.简述Ajax的原理、优缺点、用法

(1)定义

       AJAX = Asynchronous JavaScript and XML(异步的 JavaScript 和 XML)。Ajax 是一种用于创建快速动态网页的技术。Ajax 是一种在无需重新加载整个网页的情况下,可以与服务器交换数据并更新部分网页内容的技术。传统的网页(不使用 Ajax)如果需要更新内容,必须重载整个网页页面。

(2)优点和缺点

优点:

  • 减轻服务器的负担,按需取数据,最大程度的减少冗余请求;
  • 局部刷新页面,减少用户心理和实际的等待时间,带来更好的用户体验;
  • 进一步促进页面和数据的分离。

缺点:

  • AJAX大量的使用了javascript和ajax引擎,这些取决于浏览器的支持,在编写的时候考虑对浏览器的兼容性;
  • AJAX只是局部刷新,所以页面的后退按钮是没有用的;
  • 对流媒体还有移动设备的支持不是太好。

(3)工作原理

  • 创建ajax对象(XMLHttpRequest/ActiveXObject(Microsoft.XMLHttp));
  • 向服务器发送请求:选择数据传输方式(GET/POST)----》打开链接 open()-----》发送 send();
  • 当 readyState 等于 4 且状态为 200 时,表示响应已就绪,可以执行回调函数。

--------------------------------------------工作原理的细节-----------------------------------------------------

【1】创建Ajax对象

      XMLHttpRequest 用于在后台与服务器交换数据。这意味着可以在不重新加载整个网页的情况下,对网页的某部分进行更新。为了应对所有的现代浏览器,包括 IE5 和 IE6,请检查浏览器是否支持 XMLHttpRequest 对象。如果支持,则创建 XMLHttpRequest 对象。如果不支持,则创建 ActiveXObject,下面给出了代码:

    var xmlhttp;
    if (window.XMLHttpRequest){
        xmlhttp=new XMLHttpRequest();  //  IE7+, Firefox, Chrome, Opera, Safari 浏览器执行代码
    }else{
        xmlhttp=new ActiveXObject("Microsoft.XMLHTTP"); // IE6, IE5 浏览器执行代码
    }

【2】将请求发送到服务器,使用 XMLHttpRequest 对象的 open() 和 send() 方法

   例子:

   在Post方法时,可以使用 setRequestHeader() 来添加 HTTP 头,然后在 send() 方法中规定您希望发送的数据:

【3】onreadystatechange事件

每当 readyState 改变时,就会触发 onreadystatechange 事件。

  • onreadystatechange 事件存储函数(或函数名),每当 readyState 属性改变时,就会调用该函数;
  • readyState 属性存有 XMLHttpRequest 的状态信息,从 0 到 4 发生变化。

猜你喜欢

转载自blog.csdn.net/qq_21428081/article/details/82530387