jQuery AJAX 面试题及详细答案(实战版)_第1页
jQuery AJAX 面试题及详细答案(实战版)_第2页
jQuery AJAX 面试题及详细答案(实战版)_第3页
jQuery AJAX 面试题及详细答案(实战版)_第4页
jQuery AJAX 面试题及详细答案(实战版)_第5页
已阅读5页,还剩2页未读, 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

jQueryAJAX面试题及详细答案(实战版)一、基础概念类(入门必问)1、什么是AJAX?核心作用是什么?参考答案:AJAX是异步JavaScript和XML的简称,是一种前端网页局部刷新的技术方案。核心作用:无需刷新整个页面,通过后台与服务器进行少量数据交互,实现网页局部内容更新。传统网页请求会整页刷新、卡顿留白,AJAX可以在页面不重载的前提下,动态加载数据、更新页面内容,大幅提升用户体验。现在项目中基本不再使用XML格式,主流都是JSON数据格式,但技术名称依然沿用AJAX。2、原生AJAX和jQueryAJAX的区别?项目中为什么常用jQueryAJAX?参考答案:原生AJAX:需要手动创建XMLHttpRequest对象、手动处理请求状态、兼容不同浏览器、手写状态判断逻辑,代码冗余量大,兼容性问题多。jQueryAJAX:是对原生AJAX的二次封装,抹平了浏览器兼容问题,简化了代码写法,提供了统一的回调、异常处理、请求配置方式。项目使用原因:代码简洁、开发效率高、自带超时、错误拦截、请求缓存控制,适合快速开发,兼容低版本浏览器,不用手写大量重复底层逻辑。3、AJAX的同步和异步有什么区别?实际开发中用哪种?参考答案:AJAX请求默认async:true异步请求。异步(默认):发送AJAX请求后,代码不会阻塞,页面继续执行后续逻辑,服务器返回数据后再触发回调函数处理结果。不会卡死页面,用户可以正常操作页面。同步(async:false):发送请求后,页面代码暂停执行、浏览器冻结,一直等待服务器返回结果,请求结束后才继续执行后续代码。会造成页面卡顿、假死。实际开发:99%场景都用异步请求,只有极少数需要依赖请求结果才能执行后续代码的特殊场景,才会临时使用同步,同步请求尽量少用。4、AJAX常见的请求方式GET和POST有什么区别?参考答案:1、参数位置不同:GET参数拼接在URL地址后面,POST参数放在请求体中。2、安全性不同:GET参数暴露在地址栏和历史记录中,不安全;POST参数隐藏在请求体,相对安全,适合传密码、隐私数据。3、数据大小限制:GET受浏览器URL长度限制,只能传少量数据;POST无长度限制,可传输大量数据、文件。4、缓存机制:GET请求会被浏览器默认缓存,重复请求会读取本地缓存;POST默认不会缓存。5、使用场景:GET用于查询、获取数据;POST用于提交、新增、修改数据。二、语法与参数类(高频面试)5、jQuery中$.ajax()常用核心参数有哪些?分别作用?参考答案:1、url:请求的后端接口地址,必填参数。2、type/method:请求方式,常用GET、POST。3、data:发送到后端的请求参数,支持对象、字符串格式。4、dataType:预期后端返回的数据格式,常用json、text、html。5、async:是否异步,默认true异步。6、timeout:请求超时时间,单位毫秒,超时直接报错终止请求。7、cache:是否开启缓存,GET请求默认true,POST默认false。8、success:请求成功的回调函数,接收后端返回数据。9、error:请求失败的回调,处理接口报错、超时、404、500等异常。10、complete:请求完成后的回调,无论成功失败都会执行,适合关闭加载动画、结束加载状态。6、jQuery简写方法$.get()、$.post()和$.ajax()的区别?参考答案:1、$.ajax():底层原生方法,参数最全、配置灵活,支持所有请求配置,适合复杂请求场景(设置超时、禁用缓存、请求头、同步异步等)。2、$.get()/$.post():是$.ajax()的简化封装,语法更简洁,只需要传地址、参数、回调、数据类型。缺点:简化方法无法精细配置超时、缓存、请求头等细节,只适合简单的数据查询、提交场景。开发规范:简单请求用简写方法,复杂请求统一用$.ajax()。7、AJAX中dataType:json作用是什么?后端返回普通字符串为什么会报错?参考答案:dataType:json表示告诉jQuery,强制将后端返回的数据解析为JSON对象。如果后端返回的不是标准JSON格式字符串(比如普通文本、空内容、带多余符号),jQuery会解析失败,直接进入error报错,这是开发中最常见的接口报错原因之一。解决方式:要么后端返回标准JSON格式,要么前端去掉dataType,在success中手动JSON.parse转换。三、问题排查与实战坑点(面试官重点考察)8、AJAX跨域是什么?为什么会出现跨域问题?参考答案:跨域是指浏览器禁止前端页面向不同域名、端口、协议的服务器发送AJAX请求,是浏览器的同源策略安全限制。只要协议、域名、端口任意一个不同,就属于跨域。同源策略目的:防止恶意网站窃取用户本地数据、Cookie、会话信息,保障前端安全。注意:跨域是浏览器限制,服务器之间互相请求不存在跨域问题。9、项目中常用的AJAX跨域解决方案有哪些?参考答案:1、后端CORS跨域(主流):后端配置响应头,允许指定域名跨域访问,简单稳定,企业项目最常用。2、JSONP:只支持GET请求,兼容性好,适合老项目,不支持POST、不适合传敏感数据。3、本地代理转发:前端配置本地代理(vue/react项目devServer代理),通过本地服务转发请求,规避跨域。4、nginx反向代理:线上部署通过nginx统一转发接口,实现同源访问。10、GET请求AJAX数据缓存问题怎么解决?参考答案:浏览器会缓存GET请求结果,导致多次请求同一个接口,数据不更新,直接读取本地缓存。常用四种解决方案:1、ajax配置cache:false,jQuery会自动拼接随机时间戳,杜绝缓存;2、手动在url后拼接随机参数或时间戳,如?t=新时间戳;3、后端接口设置响应头,禁止浏览器缓存;4、需要实时更新数据的接口,直接改用POST请求。11、AJAX请求失败error回调中,如何排查错误原因?参考答案:error回调有三个参数:xhr,status,errorMsg,可快速定位问题:1、status=timeout:请求超时,网络慢或接口响应过慢;2、status=error:接口404(地址错误)、500(后端代码报错);3、status=parsererror:数据解析错误,后端返回格式不是标准JSON;4、status=canceled:请求被手动取消或页面刷新中断。排查优先看浏览器Network面板,查看请求地址、请求参数、后端返回报文,90%的问题都能直接定位。12、多个AJAX请求先后执行,如何保证执行顺序?参考答案:默认异步请求执行顺序不可控,先返回先执行,想要保证顺序有三种方式:1、回调嵌套:上一个请求success回调中,发起下一个请求,适合少量请求;缺点是多层嵌套会形成回调地狱。2、使用同步请求:async:false,简单粗暴,缺点是会卡页面,不推荐频繁使用。3、结合Promise/asyncawait封装(主流):将ajax封装为Promise函数,通过asyncawait顺序执行,代码整洁、无卡顿,是现在项目标准写法。四、手写实操题(面试手写代码)13、手写完整的jQueryAJAXPOST请求示例(带异常处理、加载状态)参考答案:javascript

//开启加载动画

$('.loading').show();

$.ajax({

url:'/api/user/add',

type:'POST',

dataType:'json',

timeout:5000,//5秒超时

data:{

username:'test',

age:20

},

success:function(res){

//请求成功逻辑

if(res.code===200){

alert('提交成功');

}else{

alert(res.msg||'提交失败');

}

},

error:function(xhr,status){

//异常处理

if(status==='timeout'){

alert('请求超时,请重试');

}else{

alert('网络异常,接口请求失败');

}

},

complete:function(){

//关闭加载动画

$('.loading').hide();

}

})14、手写jQueryGET请求最简代码参考答案:javascript

$.get('/api/user/list',{page:1,limit:10},function(res){

console.log('请求数据:',res);

},'json');五、进阶面试题(中高级必问)15、AJAX如何防止重复提交?参考答案:实际开发中高频问题,常用三种方案:1、按钮禁用:点击提交按钮后立即禁用,complete回调中恢复按钮,防止连续点击重复请求;2、请求锁变量:定义全局状态变量,请求中禁止发起新请求,请求结束解锁;3、取消上一次请求:每次发起新请求前,终止上一次未完成的AJAX请求,适合搜索联想、下拉分页场景。16、jQueryAJAX中complete和success/error的区别?参考答案:1、success:只在接口请求成功、数据正常返回时执行;2、error:只在接口报错、超时、解析失败、跨域失败时执行;3、complete:无论成功、失败、超时、取消,所有请求结束都会执行。业务场景:loading加载动画、按钮解锁、状态重置,统一放在complete中,避免遗漏异常场景导致页面卡死。17、AJAX如何传递JSON格式请求体参数?参考答案:默认data传对象是表单格式提交,如果需要传JSON请求体,需要手动设置请求头、序列化参数:javascript

$

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论