原生 JavaScript 发送请求

要使用原生 JavaScript 发送一个 POST 请求,你可以使用 XMLHttpRequest 或 fetch API。

目录

 

fetch API

介绍

基本使用方法

参数

相应结果

错误处理

取消请求

异步操作

例1(携带参数为json时):

例2(携带参数为表单编码的数据时):

XMLHttpRequest


 

fetch API

介绍

Fetch API是现代浏览器提供的用于处理网络请求的强大工具。它提供了一种简单、灵活和强大的方式来获取数据,而无需依赖旧的XMLHttpRequest

基本使用方法

Fetch API接受一个URL作为请求的地址,并返回一个Promise对象。你可以使用.then()方法处理响应,并使用.catch()方法处理错误

参数

  • URL:发送网络请求的地址。
  • 配置对象:包含以下字段:
  1. method:请求方法,默认为GET。
  2. headers:请求的头部信息,接受一个对象。
  3. body:请求的参数,可以是字符串、FormData、Blob或BufferSource等类型。当为GET请求时,参数拼在URL上。
  4. credentials:cookie设置,默认omit,忽略不带cookie;same-origin同源请求带cookie;include无论跨域还是同源都会带cookie。
  5. mode:指定请求模式,默认值为cors,允许跨域;same-origin只允许同源请求;no-cors只限于get、post和head,并且只能使用有限的几个简单标头。
  6. cache:用户指定缓存策略。
  7. keepalive:用于页面卸载时,告诉浏览器在后台保持连接,继续发送数据。

相应结果

Fetch API返回一个Promise对象,它将在请求成功时解析为Response对象。你可以使用Response对象的.json().text()等方法来解析响应数据。

错误处理

Fetch API返回的Promise在发生错误时会被拒绝,你可以使用.catch()方法捕获并处理错误。在上面的示例中,我们使用.catch()方法打印出错误信息。

取消请求

如果你需要在某个时刻取消Fetch请求,可以使用Response对象的.cancel()方法。这将导致Promise被拒绝,并返回一个取消状态码。请注意,取消请求可能不会立即停止服务器上的处理过程。

异步操作

Fetch API返回的Promise是异步的,这意味着你不能直接从Promise中获取结果。你需要使用.then()方法来处理异步操作的结果或使用async/await语法来简化异步代码的编写。例如:

async function fetchData() {  
  try {  
    const response = await fetch('/abc'); // 等待fetch完成并返回结果  
    const data = await response.json(); // 等待解析响应数据并返回结果  
    console.log(data); // 打印解析后的数据  
  } catch (error) {  
    console.error('Error:', error); // 捕获并打印错误信息  
  }  
}

例1(携带参数为json时):

fetch('https://......', {  
  method: 'POST', // 或者 'GET'  
  headers: { 
    'Content-Type': 'application/json' //携带参数为json
  },  
  body: JSON.stringify({id:0}) // post请求携带的参数  
  // params:{id:0} // get请求携带的参数  
})  
.then(response => response.json()) // 将响应转换为 JSON  
.then(data => console.log(data)) // 打印响应数据  
.catch((error) => {  
  console.error('Error:', error);  
});

例2(携带参数为表单编码的数据时):

const formData = new FormData();  
formData.append('param1', 'value1');  
formData.append('param2', 'value2');  
formData.append('param3', 'value3');  
  
fetch('https://api.example.com/data', {  
  method: 'POST',  
  headers: {  
    'Content-Type': 'application/x-www-form-urlencoded;charset=UTF-8',  //表单编码
  },  
  body: formData,  
})  
.then(response => response.json())  
.then(data => console.log(data))  
.catch((error) => {  
  console.error('Error:', error);  
});

append方法用于向FormData对象中添加数据。它接受两个参数:

  1. name(字符串):数据的键名(name)。
  2. value(字符串或Blob):要添加的值。

XMLHttpRequest

//1.创建一个XMLHttpRequest对象:
var xhr = new XMLHttpRequest();
//2.配置请求参数:
xhr.open('POST', 'https://.....', true);//这里的第一个参数是请求方法(这里是POST),第二个参数是请求的URL,第三个参数指定请求是否异步处理(true表示异步处理)。
//3.设置请求头:
xhr.setRequestHeader('Content-Type', 'application/x-www-form-urlencoded;charset=UTF-8');
//如果要使用json,可以用application/json'
//4.发送请求:
xhr.send('id=0&name="www"');//这里将参数'id=0'作为POST数据发送给服务器。
//如何要传递json对象,xhr.sendJSON.stringify({param1: 'value1',param2: 'value2'});
//5.监听响应:
xhr.onload = function() {  
  if (xhr.status === 200) { // 200表示请求成功  
    var data = xhr.responseText; // 获取响应数据 
    //var data = JSON.parse(xhr.responseText); // 将响应的JSON字符串转换为JavaScript对象  
    console.log(data); // 打印响应数据  
  } else {  
    console.error('请求失败,状态码:' + xhr.status);  
  }  
};
//这里通过onload事件监听响应,并根据响应状态码判断请求是否成功。如果成功,你可以获取响应数据并进行处理。如果失败,可以在控制台打印错误信息。

  • 15
    点赞
  • 17
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值