前端发送http请求的几种方式

前端发送http请求的几种方式

1. XMLHttpRequest

所有现代浏览器均内建了XMLHttpRequest对象,IE5、IE6使用ActiveX对象。

 var xmlHttp;
 if(window.XMLHttpRequest){
 	xmlHttp = new XMLHttpRequest();
 }else{
 	xmlHttp = new ActiveXObject();
 }
  xmlHttp.open(method,url,async);
  xmlHttp.send();

2. ajax

采用jQuery.ajax。

$.ajax({
type:"GET",
url:"XXX/XXX/XXX",
data:{},
success:function(){},
error:function(){}
})

3. axios

基于promise实现,用于浏览器和node.js的HTTP客户端,本质上也是对原生XHR的封装,只不过它是Promise的实现版本

axios({
	method:"POST",
	url:"xXXX/XXX",
	data:{}
})
.then(function(){})
.catch(function(){})

4. fetch

基于promise设计的,支持async和await。
存在的问题:
1.etch只对网络请求报错,对400,500都当做成功的请求,服务器返回 400,500 错误码时并不会 reject,只有网络错误这些导致请求不能完成时,fetch 才会被 reject。
2.fetch默认不会带cookie,需要添加配置项: fetch(url, {credentials: ‘include’})
3.fetch不支持abort,不支持超时控制,使用setTimeout及Promise.reject的实现的超时控制并不能阻止请求过程继续在后台运行,造成了流量的浪费
3.fetch没有办法原生监测请求的进度,而XHR可以

fetch(url,method,body,headers)
.then(response=>{
//对结果进行处理
	switch (response.status) {
         case 200:
         	return response.json();break;
         case 401:
            let path = router.currentRoute.path;
            router.push({path:'/',query:{returnUrl:path}});break;//指定401后的跳转地址
         case 500:
            return response.json();break;
         default:
            return response
     }
})
.catch(err => {
          Notification.error({//elementUI的通知功能
            title:'请求错误',
            message:`${url}请求错误`
          });
          return err;
      });
  • 0
    点赞
  • 15
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
### 回答1: 前端可以使用`fetch()`或`XMLHttpRequest`对象来发送POST请求。以下是使用这两种方法的示例: 使用fetch(): ``` fetch(url, { method: 'POST', headers: { 'Content-Type': 'application/json' }, body: JSON.stringify(data) }) .then(response => { // 处理响应 }) .catch(error => { // 处理错误 }); ``` 其中,`url`是请求的URL,`data`是要发送的数据,`JSON.stringify()`方法将数据转换为JSON格式。`headers`指定请求头的Content-Type为application/json,表示请求体为JSON格式。 使用XMLHttpRequest: ``` var xhr = new XMLHttpRequest(); xhr.open('POST', url, true); xhr.setRequestHeader('Content-Type', 'application/json'); xhr.onreadystatechange = function() { if (xhr.readyState === 4 && xhr.status === 200) { // 处理响应 } }; xhr.send(JSON.stringify(data)); ``` 其中,`url`是请求的URL,`data`是要发送的数据,`JSON.stringify()`方法将数据转换为JSON格式。`setRequestHeader()`方法指定请求头的Content-Type为application/json,表示请求体为JSON格式。`onreadystatechange`事件处理程序在请求完成后处理响应。`xhr.readyState`为4时表示请求已完成,`xhr.status`为200表示响应成功。 ### 回答2: 前端发送POST请求是一种常见的数据传输方式,用于向服务器发送数据并获取响应。在前端开发中,通常使用XMLHttpRequest或Fetch API来实现发送POST请求。 使用XMLHttpRequest发送POST请求的方法如下: 1. 创建一个XMLHttpRequest对象:`var xhr = new XMLHttpRequest();` 2. 设置请求方法和URL:`xhr.open("POST", "http://example.com/api", true);` 3. 设置请求头:`xhr.setRequestHeader("Content-type", "application/json");` 4. 监听请求状态改变事件:`xhr.onreadystatechange = function() { ... };` 5. 发送请求并传输数据:`xhr.send(JSON.stringify(data));` 其中,第2步中的URL是请求的目标地址,可以是相对路径或绝对路径。第3步中的请求头设置了数据的格式,可以根据实际情况选择不同的格式,常见的有application/json和application/x-www-form-urlencoded。 使用Fetch API发送POST请求的方法如下: 1. 使用fetch函数发送请求并传输数据:`fetch("http://example.com/api", { method: "POST", headers: { "Content-type": "application/json" }, body: JSON.stringify(data) })` 2. 处理响应数据:`.then(response => response.json()).then(data => { ... })` 与XMLHttpRequest相比,Fetch API提供了更简洁的语法和更强大的功能,但它不支持IE浏览器。 在发送POST请求时,需要注意以下几点: 1. 确保目标服务器允许跨域请求,否则可能会遇到跨域访问限制。 2. 确定请求的数据格式,并设置正确的Content-type请求头。 3. 根据服务器的要求,将请求的数据转换为相应的格式,常见的有JSON和表单数据。 通过前端发送POST请求,可以实现与服务器的数据交互,完成用户注册、登录、提交表单等常见的操作。 ### 回答3: 前端发送 POST 请求是一种向服务器发送数据的方式,一般用于向服务器提交表单或者发送用户数据。在前端开发中,我们可以使用 JavaScript发送 POST 请求发送 POST 请求的基本步骤如下: 1. 创建一个 XMLHTTPRequest 对象。 2. 设置请求方法为 POST,并指定请求的 URL。 3. 设置请求头,通常为 `"Content-Type": "application/x-www-form-urlencoded"` 或者 `"Content-Type": "application/json"`。 4. 将要发送的数据转换为字符串,并作为请求参数发送。 5. 监听 XMLHttpRequest 的状态变化,等待服务器响应。 6. 接收服务器响应并处理。 这里是一个使用 JavaScript 发送 POST 请求的示例代码: ``` function sendPostRequest(url, data) { var xhr = new XMLHttpRequest(); xhr.open("POST", url, true); xhr.setRequestHeader("Content-Type", "application/json"); xhr.onreadystatechange = function() { if (xhr.readyState === 4 && xhr.status === 200) { var response = JSON.parse(xhr.responseText); // 处理服务器响应 } }; var jsonData = JSON.stringify(data); // 将要发送的数据转换为 JSON 字符串 xhr.send(jsonData); } // 调用发送 POST 请求的函数 var url = "http://example.com/api"; var data = { name: "John", age: 25 }; sendPostRequest(url, data); ``` 在实际开发中,根据需求的不同,可以使用其他的方式发送 POST 请求,例如使用 jQuery 的 `$.ajax` 方法、使用 Fetch API 等。不过基本的原理和步骤都是类似的。
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值