写一个原生JS http请求函数
时间: 2023-09-13 22:05:26 浏览: 150
### 回答1:
var xmlHttpRequest = new XMLHttpRequest();
xmlHttpRequest.open("GET", url, true);
xmlHttpRequest.send();
xmlHttpRequest.onreadystatechange = function () {
if (xmlHttpRequest.readyState == 4 && xmlHttpRequest.status == 200) {
var data = xmlHttpRequest.responseText;
}
}
### 回答2:
原生JS中可以使用XMLHttpRequest对象来发送Http请求。以下是一个简单的原生JS Http请求函数的示例:
```javascript
function httpRequest(method, url, data, successCallback, errorCallback) {
var xhr = new XMLHttpRequest();
xhr.open(method, url, true);
xhr.setRequestHeader('Content-Type', 'application/json');
xhr.onreadystatechange = function() {
if (xhr.readyState === XMLHttpRequest.DONE) {
if (xhr.status === 200) {
successCallback(xhr.responseText);
} else {
errorCallback(xhr.status);
}
}
};
xhr.send(JSON.stringify(data));
}
// 示例用法
var user = { name: 'John', age: 30 };
httpRequest('POST', 'https://example.com/api/user', user,
function(response) {
console.log('请求成功,返回结果:', response);
},
function(errorStatus) {
console.error('请求失败,错误状态码:', errorStatus);
}
);
```
上述示例中的`httpRequest`函数采用异步方式发送Http请求。它接受5个参数:
1. `method`:请求方法,可以是GET、POST等。
2. `url`:请求的URL地址。
3. `data`:请求的数据,可以是一个对象或字符串。
4. `successCallback`:请求成功后的回调函数,接收一个参数,即响应内容。
5. `errorCallback`:请求失败后的回调函数,接收一个参数,即错误状态码。
在函数内部,创建了一个XMLHttpRequest对象,并使用`open`方法指定了请求方法、URL地址和是否使用异步方式。然后,使用`setRequestHeader`方法设置了请求头部信息,确保请求体的格式为JSON。接下来,监听`onreadystatechange`事件,在请求状态为DONE时判断响应状态码,如果为200则调用成功回调函数,否则调用失败回调函数。最后,调用`send`方法发送请求,并将请求体转为JSON字符串。
请注意,上述示例中的请求方法默认为POST,并且请求头部信息Content-Type设置为application/json。具体的请求方法和请求头部信息可以根据实际情况进行修改。
### 回答3:
原生JS中的HTTP请求可以使用XMLHttpRequest对象实现。下面是一个简单的原生JS HTTP请求函数的示例:
```javascript
function httpRequest(method, url, data, callback) {
var xhr = new XMLHttpRequest();
xhr.open(method, url, true);
xhr.onreadystatechange = function() {
if (xhr.readyState === 4 && xhr.status === 200) {
callback(xhr.responseText);
}
}
if (method === 'POST' || method === 'PUT') {
xhr.setRequestHeader('Content-Type', 'application/json');
xhr.send(JSON.stringify(data));
} else {
xhr.send();
}
}
```
这个函数接受四个参数:请求方法(method)、请求URL(url)、请求数据(data)和回调函数(callback)。函数内部创建一个XMLHttpRequest对象,并根据传入的请求方法和URL设置请求头部信息。如果是POST或PUT请求,还需要设置请求的Content-Type为application/json,并将请求数据转换为JSON字符串并发送。最后,通过监听XMLHttpRequest对象的onreadystatechange事件,当请求状态为4并且响应状态为200时,调用回调函数处理响应数据。
使用该函数发送GET请求的示例代码如下:
```javascript
httpRequest('GET', 'https://api.example.com/users', null, function(response) {
console.log(response);
});
```
使用该函数发送POST请求的示例代码如下:
```javascript
var data = {
username: 'john',
password: '123456'
};
httpRequest('POST', 'https://api.example.com/login', data, function(response) {
console.log(response);
});
```
这是一个简单的原生JS HTTP请求函数,可以根据需要进一步扩展和优化。
阅读全文