版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
AJAX+PHP面试题及详细答案(实战完整版)一、基础概念类1、什么是AJAX?核心作用是什么?答案:AJAX全称异步JavaScript和XML,是一种前端网页局部刷新的交互技术。核心原理是通过浏览器内置的XMLHttpRequest或Fetch接口,在不刷新整个页面的前提下,与后端服务器进行数据通信。主要作用:实现页面局部无刷新更新数据,提升用户操作体验,减少页面整体跳转和加载的等待时间,常见场景如表单无刷新提交、搜索联想、分页加载、点赞评论实时更新等。2、AJAX的最大特点是什么?同步和异步的区别?答案:AJAX最核心特点:异步请求、局部刷新。同步:前端发送请求后,会暂停所有页面操作,等待后端返回结果,请求完成后才能继续执行后续代码,页面会处于阻塞状态。异步:前端发送请求后,不会等待后端响应,继续执行后续代码,后端数据返回后,通过回调函数处理结果,页面不会阻塞,这也是AJAX主流使用方式。3、AJAX支持哪些数据传输格式?常用的是哪种?答案:支持XML、HTML、文本、JSON等格式。目前项目中99%使用JSON格式,相比XML,JSON体积更小、解析速度更快、JavaScript原生支持解析,语法更简洁,适配前后端分离开发模式。二、原理与流程类4、简述原生AJAX请求的完整执行流程答案:1.创建XMLHttpRequest请求对象(兼容低版本IE需处理ActiveXObject);2.调用open()方法,设置请求方式、请求地址、是否异步;3.绑定onreadystatechange状态监听事件,监听请求状态变化;4.调用send()方法发送请求,GET请求参数拼在URL中,POST参数传入send内部;5.后端PHP接收请求、处理逻辑、返回数据;6.前端监听状态,当请求完成且状态码正常时,解析数据并更新页面局部内容。5、XMLHttpRequest五大readyState状态分别代表什么?答案:0:未初始化,尚未调用open()方法;1:请求已建立,已调用open(),未发送请求(未执行send());2:请求已发送,响应头和响应状态已接收;3:正在接收后端返回的数据,部分数据可读取;4:请求完全完成,所有数据接收完毕,可正常处理业务逻辑。实战中只判断readyState===4才会处理返回数据。6、HTTP状态码200、302、404、500、403在AJAX中分别代表什么?答案:200:请求成功,数据正常返回;302:临时重定向,请求地址跳转;404:请求地址不存在,后端接口地址错误;403:权限不足,服务器拒绝访问;500:服务器内部错误,PHP代码报错、语法错误、逻辑异常。三、PHP后端交互核心题7、PHP如何接收AJAX的GET和POST请求参数?答案:1.GET请求:通过$_GET超全局变量接收,参数拼接在URL后面,明文传输,长度有限制,适合非敏感、简短数据;2.POST请求:通过$_POST超全局变量接收,参数在请求体中传输,相对安全,无长度限制,适合表单提交、敏感数据、大量数据;3.原生AJAXPOST传JSON数据时,$_POST无法直接接收,需要通过file_get_contents('php://input')获取原始请求体,再json_decode解析。8、PHP给AJAX返回JSON数据的标准写法是什么?答案:必须先设置响应头声明数据格式为JSON,否则前端可能出现解析异常、乱码、跨格式报错,标准代码如下://设置响应头、编码、禁止缓存header('Content-Type:application/json;charset=utf-8');header('Cache-Control:no-cache');//组装数组数据$res=['code'=>200,'msg'=>'请求成功','data'=>$info];//转为JSON输出echojson_encode($res,JSON_UNESCAPED_UNICODE);exit;补充:加JSON_UNESCAPED_UNICODE是为了防止中文被Unicode转义,保证前端正常显示中文。9、AJAX发送POST请求,PHP接收不到数据的常见原因?答案:1.前端未设置请求头,POST表单请求必须设置:
xhr.setRequestHeader('Content-Type','application/x-www-form-urlencoded');2.前端传递的是JSON格式数据,后端用$_POST接收,只能用php://input接收;3.参数名前后端不一致,大小写、字符不一致;4.PHP代码提前exit、die或报错中断执行;5.跨域问题导致请求未真正到达后端;6.前端send()传参格式错误,未拼接键值对。10、PHP中php://input和$_POST的区别?答案:1.$_POST:只能接收form表单格式(application/x-www-form-urlencoded)的POST数据,自动解析为数组,无法接收JSON、二进制数据;2.php://input:读取请求体原始数据流,可以接收所有POST数据,包括JSON、表单、二进制、文件流;3.实战场景:前后端分离AJAX传JSON数据,统一使用php://input接收,兼容性更强。四、跨域问题高频题11、什么是AJAX跨域?为什么会出现跨域?答案:跨域是指前端页面的域名、端口、协议与后端接口不一致,浏览器出于安全的同源策略,会拦截AJAX的响应结果,导致请求成功但前端拿不到数据。同源策略限制:协议、域名、端口三者必须完全一致,任意一个不同即为跨域。12、PHP后端如何解决AJAX跨域问题?答案:在PHP接口文件最开头添加跨域响应头,支持所有域名访问:header('Access-Control-Allow-Origin:*');//允许请求方式header('Access-Control-Allow-Methods:GET,POST,OPTIONS');//允许自定义请求头header('Access-Control-Allow-Headers:Content-Type');//处理OPTIONS预检请求if($_SERVER['REQUEST_METHOD']=='OPTIONS'){exit;}实战生产环境不建议用*通配符,可指定前端域名,更安全:
header('Access-Control-Allow-Origin:http://localhost:8080');五、实战易错点面试题13、AJAX异步请求中,为什么外面拿不到返回的数据?答案:因为AJAX是异步执行,请求发送后代码继续向下执行,不会等待后端返回结果。外层代码执行完毕时,后端数据还没回来,所以直接在外部获取值永远为空。解决方案:所有依赖接口返回数据的逻辑,必须写在回调函数内部,或使用Promise、async/await处理异步流程。14、GET和POST在AJAX中的核心区别(面试必背)答案:1.参数位置:GET参数在URL地址栏,POST在请求体;2.安全性:GET明文可见,不安全,POST相对安全;3.数据长度:GET有浏览器地址栏长度限制,POST无限制;4.缓存:GET会被浏览器缓存,POST不会缓存;5.用途:GET用于查询数据(列表、详情),POST用于提交数据(新增、修改、删除)。15、AJAX如何实现请求超时和错误捕获?答案:1.设置超时时间:xhr.timeout=3000;(单位毫秒)2.超时监听:xhr.ontimeout=function(){提示请求超时};3.网络错误监听:xhr.onerror=function(){提示网络异常};实战中必须加超时和错误处理,避免用户一直等待无反馈。16、PHP接口中exit和return对AJAX请求的区别?答案:1.return:仅终止当前函数执行,不会停止整个脚本,后续代码仍会执行,容易导致多余数据输出,造成前端JSON解析失败;2.exit/die:直接终止整个PHP脚本执行,只输出当前接口数据,AJAX接口必须使用exit结束,保证返回数据纯净。六、手写代码面试题(真题)17、手写原生AJAX+PHP完整交互案例(POST传参)前端JS代码:javascript
//1.创建请求对象
varxhr=newXMLHttpRequest();
//2.配置请求方式和地址
xhr.open('POST','api.php',true);
//3.设置请求头
xhr.setRequestHeader('Content-Type','application/x-www-form-urlencoded');
//4.监听状态
xhr.onreadystatechange=function(){
if(xhr.readyState===4){
if(xhr.status===200){
//解析后端返回的JSON
varres=JSON.parse(xhr.responseText);
console.log(res);
alert(res.msg);
}else{
alert('请求失败');
}
}
}
//5.发送请求
xhr.send('username=test&pwd=123456');后端api.php代码:php
<?php
//设置响应头
header('Content-Type:application/json;charset=utf-8');
//接收参数
$username=$_POST['username']??'';
$pwd=$_POST['pwd']??'';
//简单逻辑判断
if(empty($username)||empty($pwd)){
echojson_encode(['code'=>400,'msg'=>'参数不能为空'],JSON_UNESCAPED_UNICODE);
exit;
}
//模拟业务处理
echojson_encode(['code'=>200,'msg'=>'提交成功','data'=>$username],JSON_UNESCAPED_UNICODE);
exit;
?>18、手写AJAX传输JSON数据+PHP接收代码前端代码:javascript
varxhr=newXMLHttpRequest();
xhr.open('POST','json.php',true);
//设置JSON请求头
xhr.setRequestHeader('Content-Type','application/json;charset=utf-8');
xhr.onreadystatechange=function(){
if(xhr.readyState===4&&xhr.status===200){
console.log(JSON.parse(xhr.responseText));
}
}
//传递JSON对象
vardata={name:'张三',age:25};
xhr.send(JSON.stringify(data));后端json.php代码:php
<?php
header('Content-Type:application/json;charset=utf-8');
//接收原始JSON数据
$json=file_get_contents('php://input');
//解析为数组
$arr=json_decode($json,true);
$res=[
'code'=>200,
'msg'=>'JSON接收成功',
'data'=>$arr
];
echojson_encode($res,JSON_UNESCAPED_UNICODE);
exit;
?>七、进阶面试题19、AJAX如何防止重复提交?答案:1.前端节流防抖:短时间多次点击只触发一次请求;2.按钮禁用:点击请求后立即禁用按钮,请求完成后再解锁;3.后端令牌验
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 好人好事事迹15篇范文
- 2026年秋招:字节跳动试题及答案
- 2026年校招:广东能源集团面试题及答案
- 2026年江苏省人教版小学英语四年级第11单元语法课件
- 2026年校招:建设银行题库及答案
- 2026年七年级语文第5单元文言文阅读同步练习题
- 2026年考研政治马原理论体系理解习题
- 2026年保安员考试题及参考答案(完整版)
- 2026年殡葬服务从业人员安全教育培训试题及答案
- 2026年草原测试题及答案
- AQ3067-2026重大事故隐患判定准则专项培训考核试卷-答案卷
- 【应用方案】2026智慧农业农业机器人智能感知与精准作业一体化设计方案
- 2026事业单位笔试-云南-云南财务(医疗招聘)历年参考题库含答案详解
- 《计算政治学概论》课件 第1-8章 计算政治学的起源与发展-数字社会治理
- CSCO非小细胞肺癌诊疗指南(2026版)
- 2025湖南长沙矿山研究院发布校招招聘52人笔试历年典型考点题库附带答案详解
- 压缩空气储能地下洞库施工方案
- T∕CCEAS008-2026 建设工程造价咨询成果文件质量标准
- 自密实混凝土施工方法及浇筑管控要点
- 冻品食材配送服务方案
- 电力重大事故隐患判定与治理监督规定(2026版)深度解读课件
评论
0/150
提交评论