ES6 fetch函数与后台交互实现


Posted in Javascript onNovember 14, 2018

最近在学习react-native,遇到调用后端接口的问题.看了看官方文档,推荐使用es6的fetch来与后端进行交互,在网上找了一些资料.在这里整理,方便以后查询.

1.RN官方文档中,可使用XMLHttpRequest

var request = new XMLHttpRequest();
request.onreadystatechange = (e) = >{
  if (request.readyState !== 4) {
    return;
  }
  if (request.status === 200) {
    console.log('success', request.responseText);
  } else {
    console.warn('error');
  }
};
request.open('GET', 'https://mywebsite.com/endpoint.php');
request.send();

这是http的原生方法,这里不做多的介绍.

2.RN官方文档中,推荐使用fetch

fetch('https://mywebsite.com/endpoint/', {
  method: 'POST',
  headers: {
    'Accept': 'application/json',
    'Content-Type': 'application/json',
  },
  body: JSON.stringify({
    firstParam: 'yourValue',
    secondParam: 'yourOtherValue',
  })
}).then(function(res) {console.log(res)
})

body中的数据就是我们需要向服务器提交的数据,比如用户名,密码等;如果上述body中的数据提交失败,那么你可能需要把数据转换成如下的表单提交的格式:

fetch('https://mywebsite.com/endpoint/', {
  method: 'POST',
  headers: {
    'Content-Type': 'application/x-www-form-urlencoded',
  },
  body: 'key1=value1&key2=value2'
}).then(function(res) {

  console.log(res)
})

这样可以获取纯文本的返回数据.

如果你需要返回json格式的数据:

fetch('https://mywebsite.com/endpoint/').then(function(res) {

  if (res.ok) {

    res.json().then(function(obj) {

      // 这样数据就转换成json格式的了

    })

  }

}, function(ex) {
  console.log(ex)
})

fetch模拟表单提交:

fetch('doAct.action', { 

  method: 'post', 

  headers: { 

   "Content-type": "application/x-www-form-urlencoded; charset=UTF-8" 

  }, 

  body: 'foo=bar&lorem=ipsum' 

 })

 .then(json) 

 .then(function (data) { 

  console.log('Request succeeded with JSON response', data); 

 }) 

 .catch(function (error) { 

  console.log('Request failed', error); 

 });

不过无论是ajax还是fetch,都是对http进行了一次封装,大家各取所好吧.

参考文档:https://developer.mozilla.org/zh-CN/docs/Web/API/GlobalFetch/fetch

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持三水点靠木。

Javascript 相关文章推荐
JS 用6N±1法求素数 实例教程
Oct 20 Javascript
JavaScript下利用fso判断文件是否存在的代码
Dec 11 Javascript
JQuery实现点击div以外的位置隐藏该div窗口
Sep 13 Javascript
jquery快捷动态绑定键盘事件的操作函数代码
Oct 17 Javascript
jQuery中DOM树操作之复制元素的方法
Jan 23 Javascript
js插件YprogressBar实现漂亮的进度条效果
Apr 20 Javascript
jquery实现可自动收缩的TAB网页选项卡代码
Sep 06 Javascript
js采用concat和sort将N个数组拼接起来的方法
Jan 21 Javascript
Angular.js与Bootstrap相结合实现表格分页代码
Apr 12 Javascript
AngularJS过滤器filter用法总结
Dec 13 Javascript
微信小程序如何加载数据库真实数据的实现
Mar 04 Javascript
vue单应用在ios系统中实现微信分享功能操作
Sep 07 Javascript
vue-cli3全面配置详解
Nov 14 #Javascript
详解IOS微信上Vue单页面应用JSSDK签名失败解决方案
Nov 14 #Javascript
laydate时间日历插件使用方法详解
Nov 14 #Javascript
JQuery模拟实现网页中自定义鼠标右键菜单功能
Nov 14 #jQuery
你应该了解的JavaScript Array.map()五种用途小结
Nov 14 #Javascript
微信小程序中的canvas 文字断行和省略号显示功能的处理方法
Nov 14 #Javascript
Vue 框架之动态绑定 css 样式实例分析
Nov 14 #Javascript
You might like
VOLVO车载收音机
2021/03/02 无线电
很温暖很温暖的Lester Young
2021/03/03 冲泡冲煮
967 个函式
2006/10/09 PHP
如何在symfony中导出为CSV文件中的数据
2011/10/06 PHP
PHP文章按日期(月日)SQL归档语句
2012/11/29 PHP
php类常量的使用详解
2013/06/08 PHP
php用户注册信息验证正则表达式
2015/11/12 PHP
php批量转换文件夹下所有文件编码的函数类
2017/08/06 PHP
PHP bin2hex()函数基础实例讲解
2019/02/11 PHP
php创建类并调用的实例方法
2019/09/25 PHP
PHP For循环字母A-Z当超过26个字母时输出AA,AB,AC
2020/02/16 PHP
js 目录列举函数
2008/11/06 Javascript
javascript 通用简单的table选项卡实现
2010/05/07 Javascript
js继承的实现代码
2010/08/05 Javascript
JavaScript表单通过正则表达式验证电话号码
2014/03/14 Javascript
javascript实现checkBox的全选,反选与赋值
2015/03/12 Javascript
Javascript实现汉字和拼音互转的终极方案
2016/10/19 Javascript
jQuery Validate格式验证功能实例代码(包括重名验证)
2017/07/18 jQuery
React学习之事件绑定的几种方法对比
2017/09/24 Javascript
ztree实现左边动态生成树右边为内容详情功能
2017/11/03 Javascript
基于vue 动态加载图片src的解决方法
2018/02/05 Javascript
vue项目打包后上传至GitHub并实现github-pages的预览
2019/05/06 Javascript
JavaScript实现五子棋小游戏
2020/10/26 Javascript
Python中设置变量作为默认值时容易遇到的错误
2015/04/03 Python
python队列queue模块详解
2018/04/27 Python
Python hmac模块使用实例解析
2019/12/24 Python
Python使用type动态创建类操作示例
2020/02/29 Python
如何学习Python time模块
2020/06/03 Python
python上selenium的弹框操作实现
2020/07/13 Python
html5基础标签(html5视频标签 html5新标签用法)
2013/12/30 HTML / CSS
贝斯特韦斯特酒店集团官网:Best Western
2019/01/03 全球购物
儿科护士实习自我鉴定
2013/10/17 职场文书
手机被没收检讨书
2014/02/22 职场文书
担保书范文
2015/01/20 职场文书
GoLang中生成UUID唯一标识的实现
2021/05/08 Golang
聊聊CSS粘性定位sticky案例解析
2022/06/01 HTML / CSS