AJAX常见面试题(下)

简介: 笔记

Ajax的实现流程是怎样的?


Ajax的实现流程是怎样的?

  • (1)创建XMLHttpRequest对象,也就是创建一个异步调用对象.
  • (2)创建一个新的HTTP请求,并指定该HTTP请求的方法、URL及验证信息.
  • (3)设置响应HTTP请求状态变化的函数.
  • (4)发送HTTP请求.
  • (5)获取异步调用返回的数据.
  • (6)使用JavaScript和DOM实现局部刷新.

<scripttype="text/javascript">


       varhttpRequest;

       functioncheckUsername(){


           if(window.XMLHttpRequest){


               //在IE6以上的版本以及其他内核的浏览器(Mozilla)等

               httpRequest=newXMLHttpRequest();

           }elseif(window.ActiveXObject){


               //在IE6以下的版本

               httpRequest=newActiveXObject();

           }



           //创建http请求

           httpRequest.open("POST","Servlet1",true);


           //因为我使用的是post方式,所以需要设置消息头

           httpRequest.setRequestHeader("Content-type","application/x-www-form-urlencoded");


           //指定回调函数

           httpRequest.onreadystatechange=response22;


           //得到文本框的数据

           varname=document.getElementById("username").value;


           //发送http请求,把要检测的用户名传递进去

           httpRequest.send("username="+name);


       }


       functionresponse22(){


           //判断请求状态码是否是4【数据接收完成】

           if(httpRequest.readyState==4){


               //再判断状态码是否为200【200是成功的】

               if(httpRequest.status==200){


                   //得到服务端返回的文本数据

                   vartext=httpRequest.responseText;


                   //把服务端返回的数据写在div上

                   vardiv=document.getElementById("result");

                   div.innerText=text;

               }


           }

       }

   </script>


AJAX请求总共有多少种CALLBACK


AJAX请求总共有多少种CALLBACK

Ajax请求总共有八种**Callback

  • onSuccess
  • onFailure
  • onUninitialized
  • onLoading
  • onLoaded
  • onInteractive
  • onComplete
  • onException


XMLHttpRequest对象在IE和Firefox中创建方式有没有不同。


有,IE中通过new ActiveXObject()得到,Firefox中通过newXMLHttpRequest()得到

  • 当然了,我们一般使用jquery封装好的ajax方法,那就没有那么麻烦了。


AJAX有哪些有点和缺点?


AJAX有哪些有点和缺点?

优点:

  • 1、最大的一点是页面无刷新,用户的体验非常好。
  • 2、使用异步方式与服务器通信,具有更加迅速的响应能力。
  • 3、可以把以前一些服务器负担的工作转嫁到客户端,利用客户端闲置的能力来处理,减轻服务器和带宽的负担,节约空间和宽带租用成本。并且减轻服务器的负担,ajax的原则是“按需取数据”,可以最大程度的减少冗余请求,和响应对服务器造成的负担。
  • 4、基于标准化的并被广泛支持的技术,不需要下载插件或者小程序。

缺点:

  • 1、ajax不支持浏览器back按钮。
  • 2、安全问题 AJAX暴露了与服务器交互的细节。
  • 3、对搜索引擎的支持比较弱。
  • 4、破坏了程序的异常机制。
  • 5、不容易调试。


请解释一下 JavaScript 的同源策略。


请解释一下 JavaScript 的同源策略。

同源策略是客户端脚本(尤其是Javascript)的重要的安全度量标准。它最早出自Netscape Navigator2.0,其目的是防止某个文档或脚本从多个不同源装载。所谓同源指的是:协议,域名,端口相同,同源策略是一种安全协议,指一段脚本只能读取来自同一来源的窗口和文档的属性


阐述一下异步加载JS。


阐述一下异步加载JS。

  1. 异步加载的方案: 动态插入 script 标签
  2. 通过 ajax 去获取 js 代码,然后通过 eval 执行
  3. script 标签上添加 defer 或者 async 属性
  4. 创建并插入 iframe,让它异步执行 js

参考资料:


如何解决跨域问题?


如何解决跨域问题?

理解跨域的概念:协议、域名、端口都相同才同域,否则都是跨域

出于安全考虑,服务器不允许ajax跨域获取数据,但是可以跨域获取文件内容。

  • 所以基于这一点,可以动态创建script标签,使用标签的src属性访问js文件的形式获取js脚本,并且这个js脚本中的内容是函数调用,该函数调用的参数是服务器返回的数据,为了获取这里的参数数据,需要事先在页面中定义回调函数,在回调函数中处理服务器返回的数据,【JSONP】
  • 在后端上配置可跨域【CORS方式】
  • 前端ajax请求的是本地接口,本地接口接收到请求后向实际的接口请求数据,然后再将信息返回给前端【代理方式】

AJAX跨域的问题可参考:


Ajax 解决浏览器缓存问题?


Ajax 解决浏览器缓存问题?

  • 1、在ajax发送请求前加上 anyAjaxObj.setRequestHeader("If-Modified-Since","0")。
  • 2、在ajax发送请求前加上 anyAjaxObj.setRequestHeader("Cache-Control","no-cache")。
  • 3、在URL后面加上一个随机数: "fresh=" + Math.random();。
  • 4、在URL后面加上时间戳:"nowtime=" + new Date().getTime();。
  • 5、如果是使用jQuery,直接这样就可以了 $.ajaxSetup({cache:false})。这样页面的所有ajax都会执行这条语句就是不需要保存缓存记录。


目录
相关文章
|
3月前
|
存储 监控 安全
ajax面试题总结
ajax面试题总结
32 1
|
5月前
|
XML 开发框架 .NET
C# .NET面试系列八:ADO.NET、XML、HTTP、AJAX、WebService
## 第二部分:ADO.NET、XML、HTTP、AJAX、WebService #### 1. .NET 和 C# 有什么区别? .NET(通用语言运行时): ```c# 定义:.NET 是一个软件开发框架,提供了一个通用的运行时环境,用于在不同的编程语言中执行代码。 作用:它为多语言支持提供了一个统一的平台,允许不同的语言共享类库和其他资源。.NET 包括 Common Language Runtime (CLR)、基础类库(BCL)和其他工具。 ``` C#(C Sharp): ```c# 定义: C# 是一种由微软设计的面向对象的编程语言,专门为.NET 平台开发而创建。 作
274 2
|
存储 移动开发 前端开发
web前端面试高频考点——JavaScript-Web-API 篇(二)AJAX、存储
web前端面试高频考点——JavaScript-Web-API 篇(二)AJAX、存储
132 0
|
Web App开发 XML 缓存
面试还不会 Ajax?拿来把你!
Ajax(Asynchronous Javascript And XML) - 最近想着去找个面试,然后看到 Ajax 也是考点之内(面向关键字面试),虽然已经用了很久的 axios 但没有系统的学过 Ajax,所以就有今天这篇文章。
|
XML Web App开发 前端开发
20道经典的AJAX面试题(必知必会)
20道经典的AJAX面试题(必知必会)
141 0
|
存储 前端开发 JavaScript
【Ajax】全面详细了解git的基础操作【万字教学+面试常客】
【Ajax】全面详细了解git的基础操作【万字教学+面试常客】
128 0
【Ajax】全面详细了解git的基础操作【万字教学+面试常客】
|
前端开发 JavaScript
ajax,jsonp,axios面试题
ajax,jsonp,axios面试题
|
JSON 前端开发 数据格式
牛客刷题——前端面试【三】谈一谈Promise、封装ajax、json数据使用
如何使用Promise、封装ajax、json数据以下方法告诉你。
188 0
|
存储 XML JSON
JavaScript相关面试题4:1.ajax、axios、fetch区别;2.Object与Map区别
使用场景 ●如果只需要简单的存储key-value的数据,并且key不需要存储复杂类型的,直接用对象 ●如果该对象必须通过JSON转换的,则只能用对象,目前暂不支持Map ●map的阅读性更好,所有操作都是通过api形式去调用,更有编程体验
349 0
|
XML 前端开发 JavaScript