原生js 使用XMLHttpRequest 封装http请求并返回响应的信息,如果超时了,则返回字符串请求超时
时间: 2023-08-31 10:41:13 浏览: 174
### 回答1:
可以使用`XMLHttpRequest`对象来发起HTTP请求并处理响应,以下是一个使用原生JavaScript封装HTTP请求的示例代码:
```javascript
function httpRequest(method, url, timeout, callback) {
var xhr = new XMLHttpRequest();
xhr.open(method, url, true);
xhr.timeout = timeout;
xhr.onload = function() {
if (xhr.readyState === 4) {
if (xhr.status === 200) {
callback(xhr.responseText);
} else {
callback(xhr.statusText);
}
}
};
xhr.ontimeout = function() {
callback('请求超时');
};
xhr.send();
}
```
这个函数接受4个参数:
- `method` - 请求方法,可以是 GET、POST 等。
- `url` - 请求的URL。
- `timeout` - 超时时间,单位是毫秒。
- `callback` - 回调函数,当请求完成时会调用此函数。函数会传入一个参数,即响应的数据或错误信息。
使用示例:
```javascript
httpRequest('GET', 'https://jsonplaceholder.typicode.com/todos/1', 5000, function(response) {
console.log(response);
});
```
在这个例子中,请求的URL是 `https://jsonplaceholder.typicode.com/todos/1`,请求方法是 GET,超时时间是 5000 毫秒,回调函数会在请求完成后被调用。如果请求成功,回调函数会收到响应数据,如果请求失败,则会收到错误信息。如果请求超时,回调函数会收到字符串 '请求超时'。
### 回答2:
原生JS可以通过XMLHttpRequest对象进行封装HTTP请求,并返回响应的信息。如果超时了,则可以返回一个字符串"请求超时"。
首先,我们可以创建一个函数来封装HTTP请求,并设置超时时间。代码如下所示:
```javascript
function httpRequest(url, timeout) {
return new Promise(function(resolve, reject) {
var xhr = new XMLHttpRequest();
xhr.timeout = timeout; // 设置超时时间
xhr.onreadystatechange = function() {
if (xhr.readyState === 4) {
if (xhr.status === 200) {
resolve(xhr.responseText); // 返回响应的信息
} else {
reject(xhr.statusText); // 返回错误信息
}
}
};
xhr.ontimeout = function() {
reject("请求超时"); // 如果超时则返回字符串"请求超时"
};
xhr.open("GET", url, true);
xhr.send();
});
}
```
接下来,我们可以使用上述封装好的函数来发送HTTP请求并获取响应信息。例如:
```javascript
var url = "http://example.com/api/data";
var timeout = 5000; // 设置超时时间为5秒
httpRequest(url, timeout)
.then(function(response) {
console.log("响应信息:", response);
})
.catch(function(error) {
console.log("错误信息:", error);
});
```
以上代码会发送一个GET请求到"http://example.com/api/data",如果在5秒内得到响应,则会输出响应的信息。如果超过5秒没有得到响应,则会输出字符串"请求超时"。
这就是使用原生JS的XMLHttpRequest对象封装HTTP请求并返回响应信息的方法,并在超时的情况下返回字符串"请求超时"的实现方式。
### 回答3:
在原生的 JavaScript 中,可以使用 XMLHttpRequest 对象对 HTTP 请求进行封装,并获取响应的信息。当请求超时时,可以返回一个字符串表示请求超时。
首先,需要创建一个 XMLHttpRequest 对象:
```javascript
var xhr = new XMLHttpRequest();
```
接下来,需要设置请求的超时时间(单位为毫秒):
```javascript
xhr.timeout = 5000; // 设置超时时间为5秒
```
然后,需要使用 open() 方法设置请求的方法和 URL:
```javascript
xhr.open('GET', 'http://api.example.com/data', true); // 发起 GET 请求到指定的 URL
```
接着,需要设置 onload 事件的回调函数,用于处理请求成功后的响应:
```javascript
xhr.onload = function() {
if (xhr.status === 200) { // 表示请求成功
var response = xhr.responseText; // 获取响应的信息
// 处理响应数据
}
};
```
同时,还需要设置 ontimeout 事件的回调函数,用于处理请求超时的情况:
```javascript
xhr.ontimeout = function() {
var response = "请求超时"; // 返回字符串表示请求超时
// 处理请求超时的情况
};
```
最后,发送请求:
```javascript
xhr.send();
```
以上是使用 XMLHttpRequest 封装 HTTP 请求并返回响应信息的基本步骤。当请求超时时,会触发 ontimeout 事件的回调函数,并返回一个字符串表示请求超时。根据实际需求,可以进一步处理响应数据或请求超时的情况。
阅读全文