首页 > 技术专区 > 面试题 > 面试题基础五(前端AJAX部分) 屏幕太窄?试试伸展一下吧 >

面试题基础五(前端AJAX部分)

1.    如何解决AJAX的跨域问题?

1、在请求页面上使用Access-Control-Allow-Origin标头

  使用如下标头可以接受全部网站请求:

header('Access-Control-Allow-Origin:*')

  使用如下标头可以接受指定网站请求:

header('Access-Control-Allow-Origin:http://www.abc.com')

2、使用jsonp跨域请求。

$data = json_encode(array('msg'=>'msg....'));

die( $_REQUEST['function_name_index'].'('.$data.')' );

<!DOCTYPE html>

<html lang="en" class="">

<head>

<meta charset="utf-8" />

<title>测试</title>

<script src="http://www.ysont.cn/plugs/cookie/js/jquery-1.11.1.min.js"></script>

<body>

<script>

    $.ajax({

        url:'http://192.168.1.124/homekoo.com/zde/cors_1.php',

        dataType:'jsonp',

        jsonp:'function_name_index',

        jsonpCallback:'function_name',

        success:function(data){

            alert(data.msg);

        }

    });

</script>

</body>

</html>

2.    什么是AJAX?AJAX的技术体系组成是由那几部分组成?

不是新技术,而是之前技术的整合

Ajax: Asynchronous Javascript And Xml;(异步的JavaScript和XML)

包括的技术:JavaScript、XML、CSS、XMLHttpRequest

异步:发送请求以后,不等结果,由回调函数处理。

JavaScript:向服务器发送请求,获得返回结果,更新页面

XML: 用来封装数据

1)创建XMLHttpReuest对象

非IE浏览器(Mozilla/Safari):

var xhr=new XMLHttpRequest();

IE:

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

低版本IE:

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

2)XMLHttpRequest对象的属性与方法

a)方法:

open("GET/POST",URL,true/false):用来向服务器建立连接

有三个参数:

参数1:提交方式,post或get

参数2:请求的URL

参数3:表示同步或异步请求,true:表示异步请求

false: 表示同步请求

send(data):发送请求

参数:提交的内容。

POST方式:data就是提交的参数,send(username=root&password=abc123);

GET方式:send(null)

 b)属性:

onreadystatechange:设置状态改变时的回调函数,回调函数用来获取服务器数据。

onreadystatechange=function(){   

readyState:服务器状态响应

状态码:

0:未初始化

1:正在加载

2:加载完成

3:请求进行中

4:请求完成

responseText:服务器返回的数据(文本格式)

responseXML:服务器返回的数据(XML格式)

3.    AJAX的优点与缺点分别是什么?

(1).AJAX的优点

<1>.无刷新更新数据。

AJAX最大优点就是能在不刷新整个页面的前提下与服务器通信维护数据。这使得Web应用程序更为迅捷地响应用户交互,并避免了在网络上发送那些没有改变的信息,减少用户等待时间,带来非常好的用户体验。

<2>.异步与服务器通信。

AJAX使用异步方式与服务器通信,不需要打断用户的操作,具有更加迅速的响应能力。优化了Browser和Server之间的沟通,减少不必要的数据传输、时间及降低网络上数据流量。

<3>.前端和后端负载平衡。

AJAX可以把以前一些服务器负担的工作转嫁到客户端,利用客户端闲置的能力来处理,减轻服务器和带宽的负担,节约空间和宽带租用成本。并且减轻服务器的负担,AJAX的原则是“按需取数据”,可以最大程度的减少冗余请求和响应对服务器造成的负担,提升站点性能。

<4>.基于标准被广泛支持。

AJAX基于标准化的并被广泛支持的技术,不需要下载浏览器插件或者小程序,但需要客户允许JavaScript在浏览器上执行。随着Ajax的成熟,一些简化Ajax使用方法的程序库也相继问世。 同样,也出现了另一种辅助程序设计的技术,为那些不支持JavaScript的用户提供替代功能。

<5>.界面与应用分离。

Ajax使WEB中的界面与应用分离(也可以说是数据与呈现分离),有利于分工合作、减少非技术人员对页面的修改造成的WEB应用程序错误、提高效率、也更加适用于现在的发布系统。

(2).AJAX的缺点

<1>.AJAX干掉了Back和History功能,即对浏览器机制的破坏。

<2>.AJAX的安全问题。

<3>.对搜索引擎支持较弱。

<4>.破坏程序的异常处理机制。

<5>.违背URL和资源定位的初衷。

<6>.AJAX不能很好支持移动设备。

<7>.客户端过肥,太多客户端代码造成开发上的成本。

4.    AJAX应用和传统Web应用有什么不同?

在传统的Javascript编程中,如果想得到服务器端数据库或文件上的信息,或者发送客户端信息到服务器,需要建立一个HTML form然后GET或者POST数据到服务器端。用户需要点击”Submit”按钮来发送或者接受数据信息,然后等待服务器响应请求,页面重新加载。

因为服务器每次都会返回一个新的页面, 所以传统的web应用有可能很慢而且用户交互不友好。

使用AJAX技术, 就可以使Javascript通过XMLHttpRequest对象直接与服务器进行交互。 

通过HTTP Request, 一个web页面可以发送一个请求到web服务器并且接受web服务器返回的信息(不用重新加载页面),展示给用户的还是通一个页面,用户感觉页面刷新,也看不到到Javascript后台进行的发送请求和接受响应。

5.    Ajax和javascript的区别?

javascript是一种用于浏览器的脚本语言,它的主要功能分dom和bom操作两种,前者用于对网页文档进行操作,后者对于浏览器对象进行操作,它们都具有丰富多彩的强大效果。虽然JavaScript在诞生之初借用了Java的名,但从前景来看,这种动态弱类型的脚本语言可能比静态强类型的Java要更有前途。

Ajax诞生于2005年,这是一种借助XMLHttpRequest异步与后台进行通信的“新”技术。XMLHttpRequest,加上dom,css,xml等各项技术,再使用JavaScript将它们糅合在一起,就组成了Ajax。它的最大特点是异步无刷新的响应机制,这使BS程序开始在界面感观上能与CS程序媲美。此外,Ajax还不限后台语言,这使得它从诞生之初就得到了非常广泛的认同和使用。