AJAX常见面试问题

1.工作当中会和后台交互吗?  那你能说说封装好的 ajax里的几个参数吗 ?

url:  发送请求的地址。

type: 请求方式(post或get)默认为get。

async: 同步异步请求,默认true所有请求均为异步请求。

timeout : 超时时间设置,单位毫秒

data:要求为Object或String类型的参数,发送到服务器的数据

cache:默认为true(当dataType为script时,默认为false), 设置为false将不会从浏览器缓存中加载请求信息。

dataType: 预期服务器返回的数据类型。


可用的类型如下:

 xml:返回XML文档,可用JQuery处理。

html:返回纯文本HTML信息;包含的script标签会在插入DOM时执行。

script:返回纯文本JavaScript代码。不会自动缓存结果。

json:返回JSON数据。

jsonp:JSONP格式。使用JSONP形式调用函数时,例如myurl?callback=?,JQuery将自动替换后一个“?”为正确的函数名,以执行回调函数。

text:返回纯文本字符串。


success:请求成功后调用的回调函数,有两个参数。

(1)   由服务器返回,并根据dataType参数进行处理后的数据。

(2)   描述状态的字符串。


error:要求为Function类型的参数,请求失败时被调用的函数。该函数有3个参数

(1) XMLHttpRequest对象

(2) 错误信息

(3) 捕获的错误对象(可选)

complete :function(XMLHttpRequest,status){ //请求完成后最终执行参数


2.json数据  如果怎么处理  他的格式 你以前工作中有没有固定格式  如果我发送一个请求 删除数据里的一条数据 我怎么知道删除成功了 或者说 删除后 会在哪里显示


JSON.parse() 转换为JSON对象,根据数据进行解析,放到页面中。

格式:{} 与 [] 结合拼接的JSON串

发送请求删除数据,后台会返回处理的结果,前台根据返回的结果判断是否成功,然后处理页面元素。


3.有没有遇到过这种情况 在ie浏览器中 后台图片数据已经改变 但是客户端没有发生改变  该怎么处理? 他提示说浏览器的缓存


JQuery.ajax() 方法,设置cache为false,就不会从浏览器缓存中加载请求,

或者利用post方法,请求数据,不会缓存,每次都是重新请求数据


4.选项卡的实现思路

       鼠标悬浮时间,调用方法,传入this,对所有的选项卡内容部分隐藏操作,对this的进行显示操作,控制display


5.级联  的实现思路

       一般地区数据都是利用二维数组存储,从后台获取到以后存储起来,

根据第一个下拉框的选项,找到对应的二维数组数据,循环new Option() add进下拉框


6. 轮播图的实现思路

第一种:

把图片名称按顺序取好名字,利用定时器,每隔多少秒,更换图片的路径

第二种:

       利用无缝滚动的技术,把图片都放入页面中,定时器进行scroll滚动,判断滚动距离取余(%) 图片宽度等于0,暂停定时器,多少秒后再开启定时器。


7.说说你理解中的bootstrap

Bootstrap是基于HTML5和CSS3开发的,它在jQuery的基础上进行了更为个性化和人性化的完善,只需要给标签起上响应的Class名称,就可以形成一套Bootstrap自己独有的网站风格,并兼容大部分jQuery插件。


8.angularjs和JQ的区别

JQ 先获取再使用。

Angularjs 直接使用


9.JQmobile和JQ的区别

jQuery Mobile 是创建移动 web 应用程序的框架。

jQuery Mobile 适用于所有流行的智能手机和平板电脑。

jQuery Mobile 使用 HTML5 和 CSS3 通过尽可能少的脚本对页面进行布局


(1) jQuery是一个js库,主要提供的功能是选择器,属性修改和事件绑定等等。

(2) jQuery UI则是在jQuery的基础上,利用jQuery的扩展性,设计的插件。提供了一些常用的界面元素,诸如对话框、拖动行为、改变大小行为等等。

(3) jQuery本身注重于后台,没有漂亮的界面,而jQuery UI则补充了前者的不足,他提供了华丽的展示界面,使人更容易接受。既有强大的后台,又有华丽的前台。jQuery UI是jQuery插件,只不过专指由jQuery官方维护的UI方向的插件。


10.你工作当中用过那些库?

jQuery


11.(1)冒泡排序,60秒倒计时,(2)页面加载更多li时怎么处理后台反回的json数据

1.双重循环,从第一位开始判断与后面每一位的大小,如果符合条件利用下面的原理换位置

c = a;

a = b;

b = c;

2.利用JSON.parse() 获得相应的JSON对象,循环添加li,数据放进去。


12.全选的实现思路

点击全选复选框时,判断checked是true还是false,是true证明全都选中,

获取到下面所有的对应的复选框,把checked改成true,否则改成false。


13.有一个输入框,只允许输入数字或字母,如果输入不合法则将输入框的边框变为红色,写代码

       var reg =/^[a-zA-Z0-9]+$/;

       if(!reg.text(输入框取出的value)){

              input.style.border= “red”;

};


14.有一个数组a=[1,2,3],如果数字a中包含1,则将数组内容复制一遍变为[1,2,3,1,2,3],写代码

       for(var i = 0;i<a.length;i++){

              if(a[i] ==1){

                     a.concat(a);

                     break;

}

}


15.写一个函数,用于生产随机密码,传入的参数为密码的长度,返回生产的随机密码,要求生成的随机密码必须含有大写字母、小写字母和数字



16.点击按钮向后台发起请求,将返回的数据直接输出,如果3秒内没有获得返回的数据则显示“请求超时,请重新提交”,写代码


varajaxTimeoutTest = $.ajax({

url:'',  //请求的URL

timeout : 1000, //超时时间设置,单位毫秒

type : 'get',  //请求方式,get或post

data :{},  //请求所传参数,json格式

dataType:'json',//返回的数据格式

success:function(data){ //请求成功的回调函数

alert("成功");

},

complete : function(XMLHttpRequest,status){ //请求完成后最终执行参数

if(status=='timeout'){//超时,status还有success,error等值的情况

  ajaxTimeoutTest.abort();//终止请求

  alert("超时");

}

}

});

17.ajax的四部:



18.ajax接受到的数据类型是什么?

String

JSON串

JSON对象


19.ajax接受到的数据如何处理?

JSON对象直接循环使用

JSON串转JSON使用

String直接使用

20.哪些地方需要ajax,哪些地方不需要,ajax的优点是什么,缺点是什么?

       页面不进行跳转刷新的时候,异步处理数据的时候,表单自动补全功能----使用Ajax,

       提交后不再使用原页面,可以进行跳转刷新的,查询之类的功能,可以不用Ajax

优点:

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

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

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

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

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

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

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

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

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

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

缺点:

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

在动态更新页面的情况下,用户无法回到前一个页面状态,因为浏览器仅能记忆历史记录中的静态页面。一个被完整读入的页面与一个已经被动态修改过的页面之间的差别非常微妙;用户通常会希望单击后退按钮能够取消他们的前一次操作,但是在Ajax应用程序中,这将无法实现。

后退按钮是一个标准的web站点的重要功能,但是它没法和js进行很好的合作。这是Ajax所带来的一个比较严重的问题,因为用户往往是希望能够通过后退来取消前一次操作的。那么对于这个问题有没有办法?答案是肯定的,用过Gmail的知道,Gmail下面采用的Ajax技术解决了这个问题,在Gmail下面是可以后退的,但是,它也并不能改变Ajax的机制,它只是采用的一个比较笨但是有效的办法,即用户单击后退按钮访问历史记录时,通过创建或使用一个隐藏的IFRAME来重现页面上的变更。(例如,当用户在Google Maps中单击后退时,它在一个隐藏的IFRAME中进行搜索,然后将搜索结果反映到Ajax元素上,以便将应用程序状态恢复到当时的状态。)

但是,虽然说这个问题是可以解决的,但是它所带来的开发成本是非常高的,并与Ajax框架所要求的快速开发是相背离的。这是Ajax所带来的一个非常严重的问题。

一个相关的观点认为,使用动态页面更新使得用户难于将某个特定的状态保存到收藏夹中。该问题的解决方案也已出现,大部分都使用URL片断标识符(通常被称为锚点,即URL中#后面的部分)来保持跟踪,允许用户回到指定的某个应用程序状态。(许多浏览器允许JavaScript动态更新锚点,这使得Ajax应用程序能够在更新显示内容的同时更新锚点。)这些解决方案也同时解决了许多关于不支持后退按钮的争论。

<2>.AJAX的安全问题。

AJAX技术给用户带来很好的用户体验的同时也对IT企业带来了新的安全威胁,Ajax技术就如同对企业数据建立了一个直接通道。这使得开发者在不经意间会暴露比以前更多的数据和服务器逻辑。Ajax的逻辑可以对客户端的安全扫描技术隐藏起来,允许黑客从远端服务器上建立新的攻击。还有Ajax也难以避免一些已知的安全弱点,诸如跨站点脚步攻击、SQL注入攻击和基于Credentials的安全漏洞等等。

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

对搜索引擎的支持比较弱。如果使用不当,AJAX会增大网络数据的流量,从而降低整个系统的性能。

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

至少从目前看来,像Ajax.dll,Ajaxpro.dll这些Ajax框架是会破坏程序的异常机制的。关于这个问题,曾在开发过程中遇到过,但是查了一下网上几乎没有相关的介绍。后来做了一次试验,分别采用Ajax和传统的form提交的模式来删除一条数据……给我们的调试带来了很大的困难。

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

例如,我给你一个URL地址,如果采用了Ajax技术,也许你在该URL地址下面看到的和我在这个URL地址下看到的内容是不同的。这个和资源定位的初衷是相背离的。

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

一些手持设备(如手机、PDA等)现在还不能很好的支持Ajax,比如说我们在手机的浏览器上打开采用Ajax技术的网站时,它目前是不支持的。

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

编写复杂、容易出错;冗余代码比较多(层层包含js文件是AJAX的通病,再加上以往的很多服务端代码现在放到了客户端);破坏了Web的原有标准。


21.你对于跨域请求了解多少?

同源策略规定在访问时如果域名,协议,端口与发起请求的地方不一致时,就属于跨域请求,

这种时候,需要使用一些跨域请求的技术,

一:

       利用JQuery的方法,使用JSONP模式访问,dataType:‘jsonp’并且再url后传入callback=?

       JQuery会生成随机回调函数名称,或者你自己起名字。

后台会获取callback的值,连接上() 把数据放入() 中,返回页面,

相当于调用函数function名(data)。

二:

       使用js标签加载方式

       利用script标签 src写想要请求的URL,地址后面连接上参数?callback= 函数名

       后台会获取callback的值,连接上() 把数据放入() 中,返回页面,

相当于调用函数function名(data)

三:

       后台直接开启同源策略的访问限制,设置响应头信息。

response.setHeader("Access-Control-Allow-Origin","*");



22.如何控制网页在网络传输中的数据量?

       分页加载,瀑布流,限制每次加载的数据量。(??????不确定)


23.前端常规开发优化策略?


1.  请减少HTTP请求

2.  请正确理解 Repaint 和 Reflow

3.  请减少对DOM的操作

4.  使用JSON格式来进行数据交换

5.  高效使用HTML标签和CSS样式

6.  使用CDN加速(内容分发网络)

7.  将CSS和JS放到外部文件中引用,CSS放头,JS放尾

8.  精简CSS和JS文件(压缩)

9.  压缩图片和使用图片Sprite技术

10.注意控制Cookie大小和污染


24.为什么异步加载JS文件?加载方式?


平时常用的引入JS方式,是同步模式,又称阻塞模式,会阻止浏览器的后续处理,停止了后续的解析,也就是说,浏览器在下载或执行该js代码块时,后面的标签不会被解析。

异步加载(async)JS文件,允许页面内容异步加载,仅适用于外部脚本。

延迟加载(defer)属性规定是否对脚本执行进行延迟,直到页面加载为止。


25.如果对一个js对象进行深度拷贝?

functionobjCopy(obj){

       var copyObj = {};

       for(var key in obj){

              copyObj[key] = typeof obj[key] ===‘object’? objCopy(obj[key]):obj[key]

}

}


26.JS中有哪些数据类型?

       number boolean string underfind null

object function array

27.ajax交换模型?同步异步的区别?

1.      触发事件调用函数

2.      创建XMlHttpRequest 对象open连接,send发送后台服务器

3.      后台接收前端数据,根据业务需求访问数据库进行增删改查

4.      数据库返回后台程序所需要的数据

5.      后台拿到数据库数据,进行合理的处理,比如JSON串,返回给前端

6.      前端接收到后台的响应数据,进行解析,根据业务需求动态操作页面元素


28.如何添加HTML事件,三种。


1. 直接在html标签的属性上添加

<div οnclick="alert('div')">div</div>

2. 用dom的on...方法添加

document.getElementById('div').onclick = function () {alert('div')};

3. 用事件监听addEventListener或attachEvent(IE)添加

document.getElementById('div').addEventListener('click', function () {alert('div')}, false);


29.JS面向对象中继承的实现方式?


简单继承:

function A(x){

   this.x=x;

function B(x,y){

   this.tmpObj=A;

   this.tmpObj(x);

   delete this.tmpObj;

   this.y=y;

}


完美继承:



本片转自博客---------------itskhdu-------------- (感兴趣的可以去看看 )

©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 206,839评论 6 482
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 88,543评论 2 382
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 153,116评论 0 344
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 55,371评论 1 279
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 64,384评论 5 374
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 49,111评论 1 285
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 38,416评论 3 400
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 37,053评论 0 259
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 43,558评论 1 300
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 36,007评论 2 325
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 38,117评论 1 334
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 33,756评论 4 324
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 39,324评论 3 307
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 30,315评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 31,539评论 1 262
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 45,578评论 2 355
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 42,877评论 2 345

推荐阅读更多精彩内容