zoukankan      html  css  js  c++  java
  • Ajax系列面试题总结

    1、Ajax是什么?如何创建一个Ajax?

    Ajax并不算是一种新的技术,全称是asychronous javascript and xml,可以说是已有技术的组合,主要用来实现客户端与服务器端的异步通信效果,实现页面的局部刷新,早期的浏览器并不能原生支持ajax,可以使用隐藏帧(iframe)方式变相实现异步效果,后来的浏览器提供了对ajax的原生支持

    使用ajax原生方式发送请求主要通过XMLHttpRequest(标准浏览器)、ActiveXObject(IE浏览器)对象实现异步通信效果

    基本步骤:

    var xhr =null;//创建对象 

    if(window.XMLHttpRequest){

    xhr = new XMLHttpRequest();

    }else{

    xhr = new ActiveXObject("Microsoft.XMLHTTP");

    }

         xhr.open(“方式”,”地址”,”标志位”);//初始化请求 

         xhr.setRequestHeader(“”,””);//设置http头信息 

         xhr.onreadystatechange =function(){}//指定回调函数 

         xhr.send();//发送请求 

    js框架(jQuery/EXTJS等)提供的ajax  API对原生的ajax进行了封装,熟悉了基础理论,再学习别的框架就会得心应手,好多都是换汤不换药的内容 

    2、同步和异步的区别?

    同步:阻塞的

    -张三叫李四去吃饭,李四一直忙得不停,张三一直等着,直到李四忙完两个人一块去吃饭

    =浏览器向服务器请求数据,服务器比较忙,浏览器一直等着(页面白屏),直到服务器返回数据,浏览器才能显示页面

    异步:非阻塞的

    -张三叫李四去吃饭,李四在忙,张三说了一声然后自己就去吃饭了,李四忙完后自己去吃

    =浏览器向服务器请求数据,服务器比较忙,浏览器可以自如的干原来的事情(显示页面),服务器返回数据的时候通知浏览器一声,浏览器把返回的数据再渲染到页面,局部更新

    3、如何解决跨域问题?

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

    出于安全考虑,服务器不允许ajax跨域获取数据,但是可以跨域获取文件内容,所以基于这一点,可以动态创建script标签,使用标签的src属性访问js文件的形式获取js脚本,并且这个js脚本中的内容是函数调用,该函数调用的参数是服务器返回的数据,为了获取这里的参数数据,需要事先在页面中定义回调函数,在回调函数中处理服务器返回的数据,这就是解决跨域问题的主流解决方案

    4、页面编码和被请求的资源编码如果不一致如何处理?

    对于ajax请求传递的参数,如果是get请求方式,参数如果传递中文,在有些浏览器会乱码,不同的浏览器对参数编码的处理方式不同,所以对于get请求的参数需要使用encodeURIComponent函数对参数进行编码处理,后台开发语言都有相应的解码api。对于post请求不需要进行编码

    5、简述ajax的过程。

    1. 创建XMLHttpRequest对象,也就是创建一个异步调用对象

    2. 创建一个新的HTTP请求,并指定该HTTP请求的方法、URL及验证信息

    3. 设置响应HTTP请求状态变化的函数

    4. 发送HTTP请求

    5. 获取异步调用返回的数据

    6. 使用JavaScript和DOM实现局部刷新

    6、阐述一下异步加载JS。

    1. 异步加载的方案: 动态插入 script 标签

    2. 通过 ajax 去获取 js 代码,然后通过 eval 执行

    3. script 标签上添加 defer 或者 async 属性

    4. 创建并插入 iframe,让它异步执行 js

    7、请解释一下 JavaScript的同源策略。‘’

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

    8、GET和POST的区别,何时使用POST?

    GET:一般用于信息获取,使用URL传递参数,对所发送信息的数量也有限制,一般在2000个字符,有的浏览器是8000个字符

    POST:一般用于修改服务器上的资源,对所发送的信息没有限制

    在以下情况中,请使用 POST 请求:

    1. 无法使用缓存文件(更新服务器上的文件或数据库)

    2. 向服务器发送大量数据(POST 没有数据量限制)

    3. 发送包含未知字符的用户输入时,POST 比 GET 更稳定也更可靠

    9、ajax是什么?ajax的交互模型?同步和异步的区别?如何解决跨域问题?

     1. 通过异步模式,提升了用户体验

     2. 优化了浏览器和服务器之间的传输,减少不必要的数据往返,减少了带宽占用

    3.  Ajax在客户端运行,承担了一部分本来由服务器承担的工作,减少了大用户量下的服务器负载。

    10、 Ajax的最大的特点是什么。

        Ajax可以实现异步通信效果,实现页面局部刷新,带来更好的用户体验;按需获取数据,节约带宽资源;

    11、ajax的缺点

     1、ajax不支持浏览器back按钮。

     2、安全问题 AJAX暴露了与服务器交互的细节。

     3、对搜索引擎的支持比较弱。

     4、破坏了程序的异常机制。

    12、ajax请求的时候get和post方式的区别

    get一般用来进行查询操作,url地址有长度限制,请求的参数都暴露在url地址当中,如果传递中文参数,需要自己进行编码操作,安全性较低。

    post请求方式主要用来提交数据,没有数据长度的限制,提交的数据内容存在于http请求体中,数据不会暴漏在url地址中。

    13、解释jsonp的原理,以及为什么不是真正的ajax

    Jsonp并不是一种数据格式9,而json是一种数据格式,jsonp是用来解决跨域获取数据的一种解决方案,具体是通过动态创建script标签,然后通过标签的src属性获取js文件中的js脚本,该脚本的内容是一个函数调用,参数就是服务器返回的数据,为了处理这些返回的数据,需要事先在页面定义好回调函数,本质上使用的并不是ajax技术

    14、什么是Ajax和JSON,它们的优缺点。

    Ajax是全称是asynchronous JavaScript andXML,即异步JavaScript和xml,用于在Web页面中实现异步数据交互,实现页面局部刷新。

    优点:可以使得页面不重载全部内容的情况下加载局部内容,降低数据传输量,避免用户不断刷新或者跳转页面,提高用户体验

    缺点:对搜索引擎不友好;要实现ajax下的前后退功能成本较大;可能造成请求数的增加跨域问题限制;

    JSON是一种轻量级的数据交换格式,ECMA的一个子集

    优点:轻量级、易于人的阅读和编写,便于机器(JavaScript)解析,支持复合数据类型(数组、对象、字符串、数字)

    15、http常见的状态码有那些?分别代表是什么意思?

    200 - 请求成功

    301 - 资源(网页等)被永久转移到其它URL

    404 - 请求的资源(网页等)不存在

    500 - 内部服务器错误

    16、一个页面从输入 URL到页面加载显示完成,这个过程中都发生了什么?

    分为4个步骤:

    1. 当发送一个 URL 请求时,不管这个 URL 是 Web 页面的 URL 还是 Web 页面上每个资源的 URL,浏览器都会开启一个线程来处理这个请求,同时在远程 DNS 服务器上启动一个 DNS 查询。这能使浏览器获得请求对应的 IP 地址。

    2. 浏览器与远程 Web 服务器通过 TCP 三次握手协商来建立一个 TCP/IP 连接。该握手包括一个同步报文,一个同步-应答报文和一个应答报文,这三个报文在 浏览器和服务器之间传递。该握手首先由客户端尝试建立起通信,而后服务器应答并接受客户端的请求,最后由客户端发出该请求已经被接受的报文。

    3. 一旦 TCP/IP 连接建立,浏览器会通过该连接向远程服务器发送 HTTP 的 GET 请求。远程服务器找到资源并使用 HTTP 响应返回该资源,值为 200 的 HTTP 响应状态表示一个正确的响应。

    4. 此时,Web 服务器提供资源服务,客户端开始下载资源。

    17、ajax请求的时候get和post方式的区别

    get一般用来进行查询操作,url地址有长度限制,请求的参数都暴露在url地址当中,如果传递中文参数,需要自己进行编码操作,安全性较低。

    post请求方式主要用来提交数据,没有数据长度的限制,提交的数据内容存在于http请求体中,数据不会暴漏在url地址中。

    18、ajax请求时,如何解释json数据

    使用eval() 或者JSON.parse() 鉴于安全性考虑,推荐使用JSON.parse()更靠谱,对数据的安全性更好。

  • 相关阅读:
    angular
    客户端存储cookie ---(优缺点及定义及用途)
    cookie的设置和获取
    和谐敏感字
    移动端上滑下滑换图片
    移动端适配方式
    Viewport及判断移动端上下滑动
    HTML5拖放&地理定位
    用canvas 做一个钟表
    用canvas上传图片
  • 原文地址:https://www.cnblogs.com/fightjianxian/p/9069795.html
Copyright © 2011-2022 走看看