位置: 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页面)

  • 小窗口模式在哪里设置(小窗口模式在哪里设置OPPO)

    小窗口模式在哪里设置(小窗口模式在哪里设置OPPO)

  • kindle用贴膜吗(kindle建议贴膜吗)

    kindle用贴膜吗(kindle建议贴膜吗)

  • 笔记本鼠标失灵(笔记本鼠标失灵按什么键恢复)

    笔记本鼠标失灵(笔记本鼠标失灵按什么键恢复)

  • 一对蓝牙耳机分开使用(一对蓝牙耳机分开使用教程)

    一对蓝牙耳机分开使用(一对蓝牙耳机分开使用教程)

  • 写论文用wps还是word(写论文用wps还是ms)

    写论文用wps还是word(写论文用wps还是ms)

  • 无法使用你的apple id(无法使用你的pbe账号游玩)

    无法使用你的apple id(无法使用你的pbe账号游玩)

  • 一闪视频没有保存本地的选项(一闪的视频怎么都没了)

    一闪视频没有保存本地的选项(一闪的视频怎么都没了)

  • 天猫店铺突然关闭原因(天猫店铺突然关闭怎么回事)

    天猫店铺突然关闭原因(天猫店铺突然关闭怎么回事)

  • 腾讯钻石充值能干什么(腾讯钻石购买)

    腾讯钻石充值能干什么(腾讯钻石购买)

  • 华为的快充头苹果能用吗(华为快充头苹果13可以使用吗)

    华为的快充头苹果能用吗(华为快充头苹果13可以使用吗)

  • 苹果xr如何下载

    苹果xr如何下载

  • 华为mate30有语音助手吗(华为mate30有语音翻译功能吗)

    华为mate30有语音助手吗(华为mate30有语音翻译功能吗)

  • 手机里软件怎样卸裁(手机里软件怎样装到电视果)

    手机里软件怎样卸裁(手机里软件怎样装到电视果)

  • 哈罗单车怎么远程扫码(哈罗单车怎么远距离帮别人扫车)

    哈罗单车怎么远程扫码(哈罗单车怎么远距离帮别人扫车)

  • win10的运行怎么打开(win10的运行怎么打开秘密潜入2游戏)

    win10的运行怎么打开(win10的运行怎么打开秘密潜入2游戏)

  • 快手怎么知道谁看过我的主页(快手怎么知道谁取关自己)

    快手怎么知道谁看过我的主页(快手怎么知道谁取关自己)

  • 知乎怎么解绑手机号(知乎怎么解绑手机号码绑定)

    知乎怎么解绑手机号(知乎怎么解绑手机号码绑定)

  • 荣耀手环3怎么设置时间(荣耀手环3怎么关机)

    荣耀手环3怎么设置时间(荣耀手环3怎么关机)

  • 剪映里的慢动作在哪里(剪映里的慢动作怎么制作)

    剪映里的慢动作在哪里(剪映里的慢动作怎么制作)

  • 货拉拉要提前多久预约(货拉拉需要提前多长时间)

    货拉拉要提前多久预约(货拉拉需要提前多长时间)

  • 学信网账号注销的后果(学信网账号注销后学籍还在吗)

    学信网账号注销的后果(学信网账号注销后学籍还在吗)

  • 苹果可以升级5g吗(苹果可以升级16系统了吗)

    苹果可以升级5g吗(苹果可以升级16系统了吗)

  • 快手怎么制作文字视频(快手怎么制作文字视频教程)

    快手怎么制作文字视频(快手怎么制作文字视频教程)

  • 织梦dedecms文章页实现多个缩略图的方法(织梦网站怎么添加关键词)

    织梦dedecms文章页实现多个缩略图的方法(织梦网站怎么添加关键词)

  • 山东税务网上申报平台操作员查询
  • 免抵退税和留抵退税可以一起退吗
  • 房地产企业实收资本要求
  • 股东分红的账务处理结转
  • 企业可以申请专项债券吗
  • 企业出租房屋增值税发票怎么开
  • 企业缴纳的社保可以税前扣除吗
  • 国债利息收入免征增值税
  • 新政府会计制度衔接预算会计需做好的账目清理工作有
  • 以房屋抵顶的工程叫什么
  • 内部交易增值税怎么算
  • 不得扣除任何费用的是
  • 享受固定资产一次性扣除政策
  • 所得税的计税依据
  • 增值税申报异常比对情况说明怎么写
  • 职业培训和职业技能培训的区别
  • 发票报销增值税
  • 期间费用燃油费计入哪个项目?
  • 劳务成本属于费用项目吗
  • 购买加油卡能否开发票
  • 换汇成本怎么计算
  • 制造费用明细科目有哪些
  • h3c路由配置教程
  • 教育培训行业收入
  • 未生产期间的折旧费记到哪
  • 向境外股东分配利润怎么交税
  • 费用发票开的是跨年的账务处理
  • 个人应纳税所得额是要交钱吗
  • 政府财政会计核算基础是什么
  • 在建工程减值准备科目编码
  • php格式转换
  • 汇总开具发票
  • 纳税人未抄报税不能进行申报,怎么办
  • yolo v5训练
  • 公司向股东个人借款的会计分录
  • 盘点时发现存货怎么处理
  • 固定资产到期日
  • 客户借款怎么做账
  • 董事费收入
  • 绿化租赁合同要交印花税吗
  • 小微企业财政政策
  • sql查询排名前三
  • 入库验收过程中可能出现哪些问题,该如何处理
  • sql server存储过程写法
  • 入库单入账税务会查吗
  • 应纳税所得额是净利润吗
  • 政府补助确认递延所得税负债
  • 出租固定资产租金属于什么收入
  • 工程服务费税率是多少2023
  • 企业的业务招待费属于什么费用
  • 经营项目里没有纹身可以纹身吗
  • 未支付怎么取消
  • 办外经证需要交税吗
  • 固定资产转换为投资性房地产转换日
  • 增值税运费发票清单怎么开
  • 清算期间档案转移
  • 服务行业收入会增加吗
  • 投标保证金退还
  • 成本结转的方法实例
  • 通过备份记录获取文件
  • centos的版本有哪些
  • windows 10预览版
  • apt-get update错误
  • centos安装完成后重启进不去
  • internetfeatures.exe是什么文件
  • 自己的磁盘
  • linux ./ 命令
  • windowsxp怎么打开设置
  • Windows XP用户账户控制
  • win7宽带连接错误651怎么办
  • winxp截图快捷命令
  • centos 安装
  • win10系统右键菜单管理
  • Linux怎么添加用户
  • linuxu
  • 常见错误类型
  • android:AndroidAnnotations上传文件,网络接口如此简洁
  • 十九届三中全会主题
  • 劳务包含哪些
  • 内蒙古包头东河机场
  • 免责声明:网站部分图片文字素材来源于网络,如有侵权,请及时告知,我们会第一时间删除,谢谢! 邮箱:opceo@qq.com

    鄂ICP备2023003026号

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

    友情链接: 武汉网站建设