xhr-get请求

目录

1、创建xhr对象

2、与服务器建立连接

3、发送请求

4、监听请求的readyStateChange事件


http://123.57.142.211:8080/api/goodList

1、协议名称(http://)

2、服务器地址:可以是域名,也可以是IP(123.57.142.211)

3、端口号,可以省略,不写端口号,浏览器请求的时候会自动加上端口号,http协议默认的端口号80,https默认端口号是443。(8080)

4、路径:描述了要访问服务器上具体哪个资源。(/api/goodList)

1、2、3都相同为同源,有一个不相同为跨域

1、创建xhr对象

var xhr = new XMLHttpRequest();

2、与服务器建立连接

GET请求携带数据,在url的后面以?链接查询字符串即可

open():与服务器建立连接

para1:请求方式 GET/POST

para2:网址,遵循接口文档。8080:端口号,服务器代码中自定义的

xhr.open(
    "GET",
    "http://123.57.142.211:8080/api/goodList"
);

3、发送请求

xhr.send();

4、监听请求的readyStateChange事件

      状态readystate的取值:

      值            状态                    描述

      0           UNSENT            代理被创建,但尚未调用open()方法

      1           OPENED            open()方法已经被调用

      2           HEADERS_RECEIVED   send()已经被调用,并且头部和状态已经可获得

      3           LOADING           下载中……,responseText属性已经包含了部分数据

      4           DONE                 下载操作完成。

xhr.onreadystatechange = function () {
    console.log(xhr.readyState);
    if (xhr.readyState == 4) {
        // responseText属性中获取成功的数据,JSON格式
        var data = JSON.parse(xhr.responseText);
        console.log(data);
        // 5、后续操作
    }
};
Vue.js中的“无限请求xhr-streaming”通常是指在处理大量数据分页加载或者实时流式数据场景下,使用长轮询(Long Polling)或服务器推送(Server-Sent Events, SSE)技术,让前端可以持续不断地从服务器接收更新,而无需频繁地发起新的HTTP请求。 在 Vue 中,这可以通过以下步骤实现: 1. **设置事件监听器**:Vue 的 `axios` 或者其他 HTTP 客户端库,比如 `vue-resource`,需要配置成支持 streaming。例如使用 axios 的 `onUploadProgress` 和 `onDownloadProgress`。 ```javascript axios.create({ onUploadProgress: function(progressEvent) { // 更新进度条或显示加载状态 }, responseType: 'stream', // 设置响应体类型为流 }) ``` 2. **实现无限请求**:当用户滚动到页面底部或达到某个触发点时,你可以启动一个长时间运行的请求(如 Long Polling),直到接收到新数据或超时为止。 ```javascript function fetchNewData() { axios.get('/api/data', { stream: true }) .then(response => response.data) .on('data', chunk => handleNewData(chunk)) .catch(error => handleError(error)); } // 触发无限加载逻辑 scrollToBottom() { if (!isRequestRunning) { isRequestRunning = true; fetchNewData(); } } ``` 3. **处理接收到的数据**:每次接收到数据块(chunk),就在前端更新视图,处理新数据。 ```javascript function handleNewData(chunk) { processChunk(chunk); // 如果有更多数据,继续请求 if (response.headers['content-length'] && response.body.byteLength > response.headers['content-length']) { setTimeout(fetchNewData, 500); // 超时后再发起请求 } else { isRequestRunning = false; // 数据结束,停止请求 } }
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值