位置: IT常识 - 正文

JS XMLHttpRequest对象详解

编辑:rootadmin
JS XMLHttpRequest对象详解 概念创建XMLHttpRequest对象建立连接发送get请求发送post请求异步响应状态readyState终止请求abort()获取XML数据获取和设置头部信息概念

推荐整理分享JS XMLHttpRequest对象详解,希望有所帮助,仅作参考,欢迎阅读内容。

文章相关热门搜索词:,内容如对您有帮助,希望把文章链接给更多的朋友!

XMLHttpRequest对象,顾名思义:是基于XML的HTTP请求,是一个浏览器接口,XMLHttpRequest 用于在后台与服务器交换数据。

我们通过XMLHttpRequest 可以在不刷新页面的情况下请求特定 URL获取数据。

创建XMLHttpRequest对象var xhr = new XMLHttpRequest();建立连接

在 JavaScript 中,使用 XMLHttpRequest 对象的 open() 方法可以建立一个 HTTP 请求。

xhr.open(method, url, async, username, password);

open方法包含5个参数:

method:HTTP 请求方法,必须参数,值包括 POST、GET 和 HEAD,大小写不敏感。url:请求的 URL 字符串,必须参数,大部分浏览器仅支持同源请求。async:指定请求是否为异步方式,默认为 true。如果为 false,当状态改变时会立即调用 onreadystatechange 属性指定的回调函数。username:可选参数,如果服务器需要验证,该参数指定用户名,如果未指定,当服务器需要验证时,会弹出验证窗口。password:可选参数,验证信息中的密码部分,如果用户名为空,则该值将被忽略。

建立连接后,可以使用 send() 方法发送请求。用法如下:

xhr.send(body);

参数 body 表示将通过该请求发送的数据,如果不传递信息,可以设置为 null 或者省略。

发送请求后,可以使用 XMLHttpRequest 对象的 responseBody、responseStream、responseText 或 responseXML 属性等待接收响应数据。

简单演示:

var xhr = creatXHR(); //实例化XMLHttpRequest 对象xhr.open ("GET", "server.txt", false"); //建立连接xhr.send(null); //发送请求console.log(xhr.responseText); //接收数据发送get请求

在 JavaScript 中,发送 GET 请求简单、方便,适用于简单字符串,不适用于大容量或加密数据。

实现方法:将包含查询字符串的 URL 传入 open() 方法,设置第 1 个参数值为 GET 即可。服务器能够通过查询字符串接收用户信息。

示例:

<input name="submit" type="button" id="submit" value="向服务器发出请求" /><script>var xhr = new XMLHttpRequest() //实例化XMLHttpRequest 对象 var b = document.querySelector("#submit"); //给b绑定事件 b.onclick = function (){ //这里使用php进行测试 // "server.php?callback=functionName"查询字符串通过问号?作为前缀附加在 URL 的末尾,发送数据是以连字符&连接的一个或多个名值对。 xhr.open("GET", "server.php?callback=functionName", false); //open方法的async参数如果为false,表示要求同步响应,当状态改变时会立即调用onreadystatechange 属性指定的回调函数。 xhr.send(null); //发送请求 console.log(xhr.responseText); //接收数据 }</script>发送post请求

在 JavaScript 中,POST 请求允许发送任意类型、长度的数据,多用于表单提交,以 send() 方法进行传递,而不以查询字符串的方式进行传递。 POST 字符串与 GET 字符串的格式相同。格式如下:

send("name1=value1&name2=value2...");JS XMLHttpRequest对象详解

示例:

<input name="submit" type="button" id="submit" value="向服务器发出请求" /><script>var xhr = new XMLHttpRequest() //实例化XMLHttpRequest 对象 var b = document.querySelector("#submit"); b.onclick = function () { xhr.open("POST", "server.php", false); //建立连接,要求同步响应 xhr.setRequestHeader ('Content-type', 'application/x-www-form-urlencoded'); //设置为表单方式提交 xhr.send("callback=functionName"); //发送请求 console.log(xhr.responseText); //接收数据 }</script>

在 open() 方法中,设置第一个参数为 POST,然后使用 setRequestHeader() 方法设置请求消息的内容类型为“application/x-www-form-urlencoded”,它表示传递的是表单值.

一般使用 POST 发送请求时都必须使用setRequestHeader()方法将请求消息的内容类型设置为表单类型,否则服务器无法识别传递过来的数据。

异步响应状态readyState

在 JavaScript 中,使用 readyState 属性可以实时跟踪异步响应状态。当该属性值发生变化时,会触发 readystatechange 事件,调用绑定的回调函数。readyState 属性值说明如表所示。 考虑到各种特殊情况,更安全的方法是同时监测 HTTP 状态码,只有当 HTTP 状态码为 200 并且readyState属性值为4时,说明 HTTP 响应顺利完成,那么就可以顺利的安全的读取响应数据。

HTTP状态码: status 0 代表请求未完成 status 200 代表一个成功的请求.

示例:

<input name="submit" type="button" id="submit" value="向服务器发出请求" /><script>var xhr = new XMLHttpRequest() //实例化XMLHttpRequest 对象 var b = document.querySelector("#submit"); b.onclick = function () { xhr.open("POST", "server.php", true); //建立连接,要求异步响应 xhr.setRequestHeader ('Content-type', 'application/x-www-form-urlencoded'); //设置为表单方式提交 xhr.send("callback=functionName"); //发送请求 xhr.onreadystatechange = function () { //绑定响应状态事件监听函数 if (xhr.readyState == 4 && xhr.status == 200) { //监听readyState状态和HTTP状态码 console.log(xhr.responseText); //接收数据 } } }</script>终止请求abort()

使用 abort() 方法可以终止正在进行的请求。用法为:

xhr.abort(); //终止请求//当一个请求被终止,它的 readyState 将被置为0,并且请求的 status 置为 0。获取XML数据

XMLHttpRequest 对象通过 responseText、responseBody、responseStream 或 responseXML 属性获取响应信息,说明如下表所示,它们都是只读属性。 在实际应用中,一般将格式设置为 XML、HTML、JSON 或其他纯文本格式。 具体使用哪种响应格式,可以参考下面几条原则。

如果向页面中添加大块数据,选择 HTML 格式会比较方便。如果需要协作开发,且项目庞杂,选择 XML 格式会更通用。如果要检索复杂的数据,且结构复杂,那么选择 JSON 格式更加轻便。获取和设置头部信息

HTTP 请求和响应都包含一组头部消息。

获取头部消息可以使用下面两个方法。

getAllResponseHeaders():获取响应的 HTTP头部消息。getResponseHeader(“Header-name”):获取指定的 HTTP 头部消息。

示例:

var xhr = new XMLHttpRequest;xhr.open("GET", "server.txt", true);xhr.onreadystatechange = function () { if (xhr.readyState == 4 && xhr.status == 200) { console.log(xhr.getAllResponseHeaders()); }}xhr.send(null);

如果要获取指定的某个头部消息.

示例:获取 Content-Type 头部的值,可以这样设计。

console.log(xhr.getResponseHeader("Content-Type"));

设置头部信息使用setResponseHeader()方法

用法如下:

xhr.setResponseHeader("Header-name", "value");

示例:使用 POST 方法传递表单数据,可以设置如下头部消息。

xhr.setResponseHeader("Content-Type", "application/x-www-form-urlencoded");
本文链接地址:https://www.jiuchutong.com/zhishi/292983.html 转载请保留说明!

上一篇:小程序 getActivePinia was called with no active Pinia. Did you forget to install pinia?(小程序开发一个多少钱啊)

下一篇:uniapp h5跳转微信小程序(wx-open-launch-weapp)(uniapp打开h5页面)

  • iqoo7手机有多重(iqoo重量多少克手机重量排行)

    iqoo7手机有多重(iqoo重量多少克手机重量排行)

  • 抖音加字幕方法是什么(抖音加字幕怎么加)

    抖音加字幕方法是什么(抖音加字幕怎么加)

  • 任天堂账号登录没反应(任天堂账号登录不上要求内容有误)

    任天堂账号登录没反应(任天堂账号登录不上要求内容有误)

  • 微信记录为啥电脑有(微信记录为啥电脑删不掉)

    微信记录为啥电脑有(微信记录为啥电脑删不掉)

  • 头条号注销后多久可以重新注册(头条号注销多久生效)

    头条号注销后多久可以重新注册(头条号注销多久生效)

  • 变频器oh是什么故障(变频器OH是什么故障代码)

    变频器oh是什么故障(变频器OH是什么故障代码)

  • 淘宝拍下不付款对号有影响吗(淘宝拍下不付款占库存吗)

    淘宝拍下不付款对号有影响吗(淘宝拍下不付款占库存吗)

  • 努比亚是中兴的吗(努比亚是中兴的品牌吗)

    努比亚是中兴的吗(努比亚是中兴的品牌吗)

  • 知乎我喜欢在哪看(知乎 我喜欢在哪里)

    知乎我喜欢在哪看(知乎 我喜欢在哪里)

  • 钉钉加群怎么进不去(钉钉加群怎么进群)

    钉钉加群怎么进不去(钉钉加群怎么进群)

  • x为什么停产(vivonex为什么停产)

    x为什么停产(vivonex为什么停产)

  • 微信视频号有什么作用(微信视频号有什么禁忌)

    微信视频号有什么作用(微信视频号有什么禁忌)

  • 韩剧tv是哪个公司的(韩剧tv属于哪个)

    韩剧tv是哪个公司的(韩剧tv属于哪个)

  • 怎么查看下单时的备注(怎么查看下单时购买记录)

    怎么查看下单时的备注(怎么查看下单时购买记录)

  • 魅族怎么解除root(魅族怎么解除root状态)

    魅族怎么解除root(魅族怎么解除root状态)

  • vivox21怎么换微信铃声(vivo手机微信怎么换主题皮肤)

    vivox21怎么换微信铃声(vivo手机微信怎么换主题皮肤)

  • 华为手环丢失后怎样能追踪下落(华为手环丢失后,别人连接手机可以看到我手机内容吗)

    华为手环丢失后怎样能追踪下落(华为手环丢失后,别人连接手机可以看到我手机内容吗)

  • qq扩列是什么(qq扩列是什么时候出的)

    qq扩列是什么(qq扩列是什么时候出的)

  • 自己淘宝店铺链接在哪(自己淘宝店铺链接怎么复制)

    自己淘宝店铺链接在哪(自己淘宝店铺链接怎么复制)

  • 华为rcs服务是什么(rcs_service是什么)

    华为rcs服务是什么(rcs_service是什么)

  • 为什么用wps发文件是个链接(为什么用wps发文件会有wps的标签)

    为什么用wps发文件是个链接(为什么用wps发文件会有wps的标签)

  • Win10专业版误删注册表开不了机怎么办?(win10误删系统软件怎么还原)

    Win10专业版误删注册表开不了机怎么办?(win10误删系统软件怎么还原)

  • 谷歌浏览器被hao123网页(或其他网页)劫持了,怎么办?(已解决)(谷歌浏览器被hao123锁定改不了)

    谷歌浏览器被hao123网页(或其他网页)劫持了,怎么办?(已解决)(谷歌浏览器被hao123锁定改不了)

  • 图片格式转换(File、Blob、base64)(图片格式转换pdf)

    图片格式转换(File、Blob、base64)(图片格式转换pdf)

  • 个人所得税是什么
  • 发票开具,发票备注栏能手写字吗?
  • 基本户可以直接转账给个人吗
  • 现金流量表利息费用怎么算
  • 印花税已经申报在哪里点交费
  • 礼品费如何报销
  • 法人可不可以办信用卡
  • 银行打出的明细清单怎么看不懂
  • 房屋租赁后转租合法吗
  • 上个月没有结账可以做下个月的账吗
  • 办公室零食采购台账
  • 采购合同可以包含安装吗
  • 委托加工物资的账务处理例题
  • 微小企业税率由3%变为1%客户要求降价
  • 供应商赠送
  • 2018年工资薪金个税起征点
  • 企业拆迁 补偿
  • 应付账款暂估借方余额怎么处理
  • 研发阶段产品销售账务处理
  • 装电脑系统的方法和步骤
  • macbookpro桌面整理
  • php23种设计模式
  • 代理公司变更地址多少钱
  • deepin怎么删除账户
  • 计算机视觉就业前景
  • HuggingFace简明教程
  • 安博塞利国家公园狮子
  • 特立尼达和多巴哥
  • 工伤个人承担的费用
  • 增值税如何在报表里填写
  • 弗洛雷斯岛
  • 多层是什么
  • 金融企业呆账核销管理办法
  • php的session
  • 税率变更为13%的文件
  • 物流辅助服务包括货物运输吗
  • css中的hover属性
  • php怎么转go
  • ps使用背景橡皮擦的时候需要按住什么键
  • php会员系统
  • 研发费用算期间费用吗
  • centos7自带yum吗
  • 织梦相关文章调用
  • 备用金用发票核销去哪核销
  • 银行对帐单
  • 药品的增值税税率13%还是17%?
  • 收到三代手续费的增值税报表填列在哪里
  • 进项税已入账未认证申报表怎么填
  • 其他货币的账面价值包括
  • 一般纳税人证明在哪里开具
  • 企业支付宝扣费
  • 低值易耗品和物料用品的区别
  • 一次性伤残补助金是单位给的还是社保给的
  • 企业间借贷是否合法2018
  • 投资者投入无形资产的入账价值
  • 如何设置营业费支付
  • mysql索引命令
  • server2003定时任务
  • ubuntu怎样
  • linux nls
  • centos调出命令行
  • 如何解决电脑蓝屏0X0000007B
  • win10磁盘占用100%卡死
  • ubuntu系统安装程序
  • centos5.5网络配置
  • win10系统开机蓝屏,重启就好
  • jquery链式操作原理
  • python 字典怎么用
  • cocos2dx ActionManager播放动画回调问题
  • js脚本使用
  • javascript的
  • javascript的sort
  • node js模块
  • javascript代码用什么来标记
  • jquery中的css方法
  • 用JObj实现的渐变效果
  • python结合了什么的高级语言
  • 建筑工程合同首付款
  • 北京税务分所怎么样啊
  • 新疆喀什泽普县教育局联系电话
  • 免责声明:网站部分图片文字素材来源于网络,如有侵权,请及时告知,我们会第一时间删除,谢谢! 邮箱:opceo@qq.com

    鄂ICP备2023003026号

    网站地图: 企业信息 工商信息 财税知识 网络常识 编程技术

    友情链接: 武汉网站建设