ajax面试题
1、ajax是什么?如何创建一个ajax?
ajax并不算是一种新的技术,全称是asynchronous javasript and xml,可以说是已有技术的组合,主要用来实现客户端服务器的异步通信效果,实现页面的局部刷新,早期的浏览器并不能原生支持ajax,可以使用隐藏帧(iframe)方式变相实现异步效果,后来的浏览器提供了对ajax的原生支持。
使用ajax原生方式发送请求主要通过XMLHttpRequest(标准浏览器)、ActiveXObject(IE浏览器)对象实现异步通信效果。
//ajax编写步骤 // 1、创建XMLHttpRequest对象 var xhr = new XMLHttpRequest(); // 2、设置请求参数 xhr.open(请求方式,请求地址,异步或同步); // 3、设置回调函数 request.onreadystatechange = function(){ if(xhr.reasyState===4){ if(xhr.status === 200) { //5、接受响应 console.log(xhr.responseText); } } } // 4、发送请求 xhr.send();
2、同步和异步的区别?
同步:浏览器向服务器请求数据,服务器比较忙,浏览器一直等着(页面白屏),直到服务器返回数据,浏览器才能显示页面。
异步:浏览器向服务器请求数据,服务器比较忙,浏览器可以自如的干原来的事情(显示页面),服务器返回数据的时候通知浏览器一声,浏览器把返回的数据再渲染到页面,局部更新。
3、如何解决跨域问题?
理解跨域的概念:协议、域名、端口都相同才同域,否则都是跨域。
出于安全考虑,服务器不允许ajax跨域获取数据,但是可以跨域获取文件内容,所以基于这一点,可以动态创建script标签,使用标签的src属性访问js文件的形式获取js脚本,并且这个js脚本中的内容是函数调用,该函数调用的参数是服务器返回的数据,为了获取这里的参数数据,需要事先在页面中定义回调函数,在回调函数中处理服务器返回的数据,这就是解决跨域问题的主流解决方案。
4、请解释一下javaScript的同源策略
同源策略是客户端脚本的重要安全度量标准,所谓同源指的是:协议,域名,端口相同,同源策略是一种安全协议,指一段脚本只能读取来自同一来源的窗口和文档的属性。
5、GET和POST的区别,何时使用POST?
GET:一般用于信息获取,使用URL传递参数,对所发送信息的数量也有限制,一般在2000个字符,有的浏览器是8000个字符。
POST:一般用于修改服务器上的资源,对所发送的信息没有限制。
以下情况中,请使用POST请求:
①、无法使用缓存文件(更新服务器上的文件或数据库)
②、向服务器发送大量数据(POST没有数据量限制)
③、发送包含未知字符的用户输入时,POST比GET更稳定也更可靠。
6、ajax的最大特点是什么?
ajax可以实现异步通信效果,实现页面局部刷新,带来更好的用户体验;按需要获取数据,节约带宽资源。
7、ajax的缺点?
①、ajax不支持浏览器back按钮。
②、安全问题ajax暴露了与服务器交互的细节。
③、对搜索引擎的支持比较弱。
④、破坏了程序的异常机制。
8、解释jsonp的原理,以及为什么不是真正的ajax?
jsonp并不是一种数据格式,而是json是一种数据格式,jsonp是用来解决跨域获取数据的一种解决方案,具体是通过动态创建script标签,然后通过标签src属性获取js文件中的js脚本,该脚本的内容是一个函数调用,参数就是服务器返回的数据,为了处理这些返回的数据,需要事先在页面定义好回调函数,本质上使用的并不是ajax技术。
9、HTTP状态码都有哪些?
200 OK 客户端请求成功
301 资源(网页等)被永久转移到其他URL
400 Bad Request 客户端请求有语法错误,不能被服务器所理解
403 Forbidden 服务器收到请求,但是拒绝提供服务
404 Not Found 请求资源部存在,输入了错误的URL
500 Internal Server Error 服务器发生不可预期的错误
503 Server Unavailable 服务器当前不能处理客户端的请求,一段时间后可能恢复正常。
10、为什么利用多个域名来存储网站资源会更有效?
确保用户在不同地区能用最快的速度打开网站,其中某个域名崩溃用户也能通过其他域名访问网站,并且不同的资源放到不同的服务器上有利于减轻单台服务器的压力。