首页IT科技健身 下面流血怎么回事(JS XMLHttpRequest对象详解)

健身 下面流血怎么回事(JS XMLHttpRequest对象详解)

时间2025-06-15 13:41:53分类IT科技浏览7719
导读:概念 XMLHttpRequest对象,顾名思义:是基于XML的HTTP请求,是一个浏览器接口,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...");

示例:

<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");
声明:本站所有文章,如无特殊说明或标注                       ,均为本站原创发布        。任何个人或组织                       ,在未征得本站同意时,禁止复制、盗用                       、采集                       、发布本站内容到任何网站、书籍等各类媒体平台                       。如若本站内容侵犯了原著者的合法权益               ,可联系我们进行处理               。

创心域SEO版权声明:以上内容作者已申请原创保护,未经允许不得转载,侵权必究!授权事宜、对本内容有异议或投诉,敬请联系网站管理员,我们将尽快回复您,谢谢合作!

展开全文READ MORE
获取微信用户信息失败是怎么回事(SoringCloud(四) – 微信获取用户信息) 自己如何注册网站(如何给自己的公司建网站)