Ajax 请求数据
发布日期:2022-02-22 16:04:47
浏览次数:42
分类:技术文章
本文共 2477 字,大约阅读时间需要 8 分钟。
Ajax ( asynchronous javascript and xml(json) ) 是一种在无需加载整个网页的情况下能够更新部分网页的技术。
- 原理:Ajax 是 JavaScript 基于 XMLHttpRequest 对象与服务端进行交互,向服务端发送一个请求,并且获取和处理服务器返回的内容。
XHR对象和web服务器进行数据的异步交换
一、创建XHR对象(Ajax对象)
var xhr= new XMLHttpRequest();//IE5,IE6 不支持
兼容性写法:
var request = null;if(window.XMLHttpRequest){ request = new XMLHttpRequest();}else{ request = new ActiveXObject('Microsoft.XMLHTTP');// IE5 , IE6}
二、XHR对象发送HTTP请求
xhr.open(method,url,async) // 建立http连接,使用method方式向url同步/异步请求数据
- method:get | post 不区分大小写;
- url:文件路径/文件名(服务器地址) 当为 文件路径/文件名/?属性名=属性值&属性名=属性值 时,传递数据 ,需要后台接收
- async: true 异步请求(默认) | false 同步请求
在发送请求之前可以设置请求头信息
xhr.setRequestHeader("Content-type","application/x-www-form-urlencoded")
xhr.send(string) // 将请求发送到服务器上
- string:请求参数对象。GET请求:可以不写参数或null;POST请求需需要携带请求体
xhr.abort();// 中止请求 调用这个方法以后,readyState属性变为4,status属性变为0
withCredenticals :表示跨域请求时,用户信息(比如 Cookie 和认证的 HTTP 头信息)是否会包含在请求之中,默认为false。
客户端设置请求头允许携带cookie:xhr.withCredenticals = true;服务端必须显示返回:Access-Control-Allow-Credentials: true
三、XHR获取服务器的响应
属性
-
responseText:获得字符串形式的响应数据
-
responseXML:获得XML形式的响应数据
-
status 和statusText:以数字和文本形式返回HTTP状态码
-
getAllResponseHeader():获取所有的响应报头
-
getResponseHeader():查询响应中的某个字段的值
-
readyState属性,指通信状态,属性值的变化代表服务器响应的变化
0:请求未初始化,open还没有调用 1:服务器连接已建立,已调用send(),正在发送请求 2:请求已接收,send()方法执行完成,已经接受到全部响应内容 3:请求处理中,正在解析响应内容 4:请求已完成,响应内容解析完成
- status属性 200, OK,访问正常 301, Moved Permanently,永久移动 302, Moved temporarily,暂时移动 304, Not Modified,未修改 307, Temporary Redirect,暂时重定向 401, Unauthorized,未授权 403, Forbidden,禁止访问 404, Not Found,未发现指定网址 500, Internal Server Error,服务器发生错误
事件
- onreadystatechange事件监听xhr对象上的readyState属性的变化,即监听服务器的响应
- onabort事件:请求中止
- onerror事件:请求失败
- onload 事件:请求成功完成
- ontimeout事件:请求超时
request.onreadystatechange = function(){ if(request.readyState === 4 && request.status === 200){ //响应完成且请求成功 request.responseText //获取服务器响应的内容 }}
手写一个Ajax,不依赖第三方库
var xhr = new XMLHttpRequest();xhr.open("GET","/api",false);// true 异步 ; false 同步//状态码改变触发 readystatechange事件xhr.onreadystatechange = function(){ if(xhr.readyState == 4){ if(xhr.status == 200){ //当状态为4并且状态码为200时 成功。 alert(xhr.responseText); } }}xhr.send(null);
IE兼容问题:IE低版本使用ActiveXObject,和W3C标准不同
jQuery实现Ajax
jQuery.ajax({ type:GET(默认) | post, //在jQuery1.9以后的版本中使用ajax时,可以使用method替换type属性 url:''//请求地址, data:{ key:value} ,//请求参数 dataType:'json',//预期服务器返回的数据类型。如果不指定jQuery将自动根据HTTP包MIME信息来智能帕努单,一般采用json格式。 success:(res)=>{ }, error:(jqXHR)=>{ }//第一个参数为jQuery的XHR对象})
Ajax 之旅就结束啦,文中若有错误请及时指出并联系,不胜感激!
转载地址:https://blog.csdn.net/Conradine_Lian/article/details/107222510 如侵犯您的版权,请留言回复原文章的地址,我们会给您删除此文章,给您带来不便请您谅解!
发表评论
最新留言
关注你微信了!
[***.104.42.241]2024年04月25日 09时21分40秒
关于作者
喝酒易醉,品茶养心,人生如梦,品茶悟道,何以解忧?唯有杜康!
-- 愿君每日到此一游!
推荐文章
FTP文件管理项目(本地云)项目日报(二)
2019-04-27
FTP文件管理项目(本地云)项目日报(三)
2019-04-27
FTP文件管理项目(本地云)项目日报(七)
2019-04-27
什么是服务熔断?
2019-04-27
服务器压力过大?CPU打满?我来帮你快速检查Linux服务器性能
2019-04-27
C++面经总结之《Effective C++》(一)
2019-04-27
C++面经总结之《Effective C++》(二)
2019-04-27
这是什么“虎狼之词”啊!!!程序员的健康问题,看一线老中医怎么说!!!
2019-04-27
打开我的收藏夹 -- Python数据分析杂谈
2019-04-27
linux shell — 6.初识 EXT2 文件系统
2019-04-27
python - 【用户、商品】【购买、浏览】数据处理
2019-04-27
python - sql + pandas 与 sqlite 结合
2019-04-27
python - 使用sql 分析(06 - 15)国内各省GDP
2019-04-27
python - 抓取汇率数据分析美元和欧元对RMB的变化曲线
2019-04-27
python 数据科学 - 【回归分析】 ☞ 线性回归(2)
2019-04-27
设计模式——工厂模式
2019-04-27
Unity中实现有限状态机FSM
2019-04-27
Unity中实现反弹
2019-04-27
U3D游戏开发框架(九)——事件序列
2019-04-27