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 相关文章推荐
阻止JavaScript事件冒泡传递(cancelBubble 、stopPropagation)
May 08 Javascript
javascript实现上传图片并预览的效果实现代码
Apr 11 Javascript
《JavaScript高级程序设计》阅读笔记(二) ECMAScript中的原始类型
Feb 27 Javascript
JQuery跳出each循环的方法
Apr 16 Javascript
基于Javascript实现的不重复ID的生成器
Dec 25 Javascript
JS中精巧的自动柯里化实现方法
Dec 12 Javascript
Vue兼容ie9的问题全面解决方案
Jun 19 Javascript
微信小程序画布圆形进度条显示效果
Nov 17 Javascript
BootstrapValidator验证用户名已存在(ajax)
Nov 08 Javascript
js实现无缝轮播图效果
Mar 09 Javascript
Swiper实现导航栏滚动效果
Oct 16 Javascript
Ajax异步刷新功能及简单案例
Nov 20 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
phpmyadmin MySQL 加密配置方法
2009/07/05 PHP
编写php应用程序实现摘要式身份验证的方法详解
2013/06/08 PHP
php获取301跳转URL简单实例
2013/12/16 PHP
CodeIgniter模板引擎使用实例
2014/07/15 PHP
SWFObject Flash js调用类
2008/07/08 Javascript
javascript 正则替换 replace(regExp, function)用法
2010/05/22 Javascript
js获取浏览器的可视区域尺寸的实现代码
2011/11/30 Javascript
JavaScript简单实现网页回到顶部功能
2013/11/12 Javascript
jQuery中detach()方法用法实例
2014/12/25 Javascript
js实现不提交表单获取单选按钮值的方法
2015/08/21 Javascript
JavaScript每天必学之基础知识
2016/09/17 Javascript
老生常谈JavaScript中的this关键字
2016/10/01 Javascript
Jquery EasyUI $.Parser
2017/06/02 jQuery
Angularjs添加排序查询功能的实例代码
2017/10/24 Javascript
JS设计模式之策略模式概念与用法分析
2018/02/05 Javascript
JS实现的检验身份证格式并输出出生日期,年龄,性别,出生地示例
2019/05/17 Javascript
Vue 的双向绑定原理与用法揭秘
2020/05/06 Javascript
CentOS 8.2服务器上安装最新版Node.js的方法
2020/12/16 Javascript
vue-router路由懒加载及实现的3种方式
2021/02/28 Vue.js
Python的Flask框架中使用Flask-SQLAlchemy管理数据库的教程
2016/06/14 Python
Python判断列表是否已排序的各种方法及其性能分析
2016/06/20 Python
Python的爬虫框架scrapy用21行代码写一个爬虫
2017/04/24 Python
详解python的sorted函数对字典按key排序和按value排序
2018/08/10 Python
wxPython的安装与使用教程
2018/08/31 Python
python与mysql数据库交互的实现
2020/01/06 Python
通过实例学习Python Excel操作
2020/01/06 Python
基于matplotlib中ion()和ioff()的使用详解
2020/06/16 Python
python中Mako库实例用法
2020/12/31 Python
HTML5 localStorage使用总结
2017/02/22 HTML / CSS
考试不及格检讨书
2014/01/09 职场文书
党员岗位承诺口号大全
2014/03/28 职场文书
一分钟演讲稿
2014/04/30 职场文书
2014年企业团支部工作总结
2014/12/10 职场文书
2016年小学生清明节广播稿
2015/12/17 职场文书
2019军训心得体会
2019/06/27 职场文书
python图片灰度化处理的几种方法
2021/06/23 Python