ajax常考的面试题汇总

(面试题从网上收集)

1、什么是AJAX,它的特点是什么,为什么要使用Ajax(请谈一下你对Ajax的认识)

  AJAX的全称是Asynchronous JavaScript And XML.

  Ajax可以实现动态不刷新(局部刷新) 就是能在不更新整个页面的前提下维护数据。这使得Web应用程序更为迅捷地回应用户动作,并避免了在网络上发送那些没有改变过的信息。

  AJAX是2005年由Google发起并流行起来的编程方法, AJAX不是一个新的编程语言,但是它是一个使用已有标准的新的编程技术。
  使用AJAX可以创建更好,更快,更用户界面友好的Web应用。
  AJAX技术基于Javascript和HTTP Request.

2、什么样的情况会造成跨域,跨域解决方案有哪些?

  同源策略限制 不同源会造成跨域。子域名不同,主域名不同,端口号不同,ip地址和网址不同都会造成跨域。

  解决方案有三种:

  1、代理服务器

  2、设置请求头:Access-Control-Allow-Origin: * //允许所有域名访问

         Access-Control-Allow-Origin: http://a.com //只允许所有域名访问

  3、jsonp(只能解决get跨域

    原理:动态创建一个script标签。利用script标签的src属性不受同源策略限制。因为所有的src属性和href属性都不受同源策略限制。可以请求第三方服务器数据内容。

    步骤:

    1.   去创建一个script标签
    2.   script的src属性设置接口地址
    3.   接口参数,必须要带一个自定义函数名 要不然后台无法返回数据。
    4. 通过定义函数名去接收后台返回数据

3、http常见状态码有哪些?  

  状态码:

    0: 请求未初始化

    1: 服务器连接已建立

    2: 请求已接收

    3: 请求处理

    4: 请求已完成,且响应已就绪

  http状态响应码:
    1xx 信息类

      100   (继续)请求者应当继续提出请求。服务器返回此代码表示已收到请求的第一部分,正在等待其余部分

    2xx 成功

      200   (成功)  服务器已成功处理了请求。通常,这表示服务器提供了请求的网页。

    3xx 重定向

      304   (未修改)自从上次请求后,请求的网页未修改过。服务器返回此响应时,不会返回网页内容。

    4xx 客户端错误

      404   (未找到)服务器找不到请求的网页。

    5xx 服务端错误 

      503   (服务不可用)服务器目前无法使用(由于超载或停机维护)。通常,这只是暂时状态。

4、简述原生js ajax请求的几个步骤?

//创建 XMLHttpRequest 对象
var ajax = new XMLHttpRequest();
//规定请求的类型、URL 以及是否异步处理请求。
ajax.open('GET',url,true);
//发送信息至服务器时内容编码类型
ajax.setRequestHeader("Content-type", "application/x-www-form-urlencoded"); 
//发送请求
ajax.send(null);  
//接受服务器响应数据
ajax.onreadystatechange = function () {
    if (obj.readyState == 4 && (obj.status == 200 || obj.status == 304)) { 
    }
};

  

5、介绍ajax中get和post的请求方式及他们的优缺点?

   代码上的区别

    1:get通过url传递参数

    2:post设置请求头 规定请求数据类型

  使用上的区别

    1:post比get安全 (因为post参数在请求体中。get参数在url上面)

     2:get传输速度比post快 根据传参决定的。 (post通过请求体传参,后台通过数据流接收。速度稍微慢一些。而get通过url传参可以直接获取)

     3:post传输文件大理论没有限制 get传输文件小大概7-8k ie4k左右

    4:get获取数据 post上传数据 (上传的数据比较多 而且上传数据都是重要数据。所以不论在安全性还是数据量级 post是最好的选择)

6、Ajax和javascript的区别。

  javascript是一种在浏览器端执行的脚本语言,Ajax是一种创建交互式网页应用的开发技术 ,它是利用了一系列相关的技术其中就包括javascript。

  Javascript是由网景公司开发的一种脚本语言,它和sun公司的java语言是没有任何关系的,它们相似的名称只是一种行销策略。
  在一般的web开发中,javascript是在浏览器端执行的,我们可以用javascript控制浏览器的行为和内容。
  在 Ajax应用中信息是如何在浏览器和服务器之间传递的,通过XML数据或者字符串

7、Ajax都有哪些优点和缺点?

  优点:

  1、最大的一点是页面无刷新,用户的体验非常好。

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

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

8json字符串转换集json对象、json对象转换json字符串

//字符串转对象
JSON.parse(json)
eval('(' + jsonstr + ')')   
// 对象转字符串
JSON.stringify(json)

9、Ajax主要包含了哪些技术?  

  Ajax(Asynchronous JavaScript + XML)的定义
  基于web标准(standards-based presentation)XHTML+CSS的表示;
  使用 DOM(Document Object Model)进行动态显示及交互;
  使用 XML 和 XSLT 进行数据交换及相关操作;
  使用XMLHttpRequest 进行异步数据查询、检索;
  使用 JavaScript 将所有的东西绑定在一起。英文参见Ajax的提出者Jesse James Garrett的原文,原文题目(Ajax: A New Approach to Web Applications)。
  类似于DHTML或LAMP,AJAX不是指一种单一的技术,而是有机地利用了一系列相关的技术。事实上,一些基于AJAX的“派生/合成”式(derivative/composite)的技术正在出现,如“AFLAX”。
  AJAX的应用使用支持以上技术的web浏览器作为运行平台。这些浏览器目前包括:Mozilla、Firefox、Internet Explorer、Opera、Konqueror及Safari。但是Opera不支持XSL格式对象,也不支持XSLT。

10、AJAX技术体系的组成部分有哪些。

   HTML,css,dom,xml,xmlHttpRequest,javascript

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

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

    指一段脚本只能读取来自同一来源的窗口和文档的属性。

12、AJAX请求总共有多少种CALLBACK

   Ajax请求总共有八种Callback 
    onSuccess 
    onFailure 
    onUninitialized 
    onLoading 
    onLoaded 
    onInteractive 
    onComplete 
    onException 

13、介绍一下XMLHttpRequest对象的常用方法和属性。 

  open(“method”,”URL”) 建立对服务器的调用,第一个参数是HTTP请求 方式可以为GET,POST或任何服务器所支持的您想调用的方式。
  第二个参数是请求页面的URL。
  send()方法,发送具体请求
  abort()方法,停止当前请求
  readyState属性 请求的状态 有5个可取值0=未初始化 ,1=正在加载
  2=以加载,3=交互中,4=完成
  responseText 属性 服务器的响应,表示为一个串
  reponseXML 属性 服务器的响应,表示为XML
  status 服务器的HTTP状态码,200对应ok 400对应not found

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

  Jsonp并不是一种数据格式9,而json是一种数据格式,jsonp是用来解决跨域获取数据的一种解决方案,具体是通过动态创建script标签,然后通过标签的src属性获取js文件中的js脚本,该脚本的内容是一个函数调用,

  参数就是服务器返回的数据,为了处理这些返回的数据,需要事先在页面定义好回调函数,本质上使用的并不是ajax技术

15、一个页面从输入 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 服务器提供资源服务,客户端开始下载资源。

16、介绍一下Prototype的$()函数,$F()函数,$A()函数都是什么作用

  $() 方法是在DOM中使用过于频繁的document.getElementByIdx_x_x() 方法的一个便利的简写,就像这个DOM方法一样,这个方法返回参数传入的id的那个元素。
  $F()函数是另一个大收欢迎的“快捷键”,它能用于返回任何表单输入控件的值,比如textbox,drop-down list。这个方法也能用元素id或元素本身做为参数。
  $A()函数能把它接收到的单个的参数转换成一个Array对象。
 
17、同步和异步的区别?

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

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

18、为什么利用多个域名来存储网站资源会更有效?
 
  确保用户在不同地区能用最快的速度打开网站,其中某个域名崩溃用户也能通过其他域名访问网站,并且不同的资源放到不同的服务器上有利于减轻单台服务器的压力。
原文地址:https://www.cnblogs.com/wcx-20151115-hzz/p/10439502.html