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 相关文章推荐
解决extjs在firefox中关闭窗口再打开后iframe中js函数访问不到的问题
Nov 06 Javascript
JQuery 无废话系列教程(一) jquery入门 [推荐]
Jun 23 Javascript
jquery弹出框的用法示例(一)
Aug 26 Javascript
Java File类的常用方法总结
Mar 18 Javascript
JQuery实现动态添加删除评论的方法
May 18 Javascript
Bootstrap布局组件教程之Bootstrap下拉菜单
Jun 12 Javascript
js中遍历对象的属性和值的方法
Jul 27 Javascript
AngularJS 执行流程详细介绍
Aug 18 Javascript
node.js版本管理工具n无效的原理和解决方法
Nov 24 Javascript
原生javascript移动端滑动banner效果
Mar 10 Javascript
vue+Element实现搜索关键字高亮功能
May 28 Javascript
vue Element左侧无限级菜单实现
Jun 10 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
多人战的战术与战略
2020/03/04 星际争霸
编译php 5.2.14+fpm+memcached(具体操作详解)
2013/06/18 PHP
实例简介PHP的一些高级面向对象编程的特性
2015/11/27 PHP
ThinkPHP实现分页功能
2017/04/28 PHP
js模拟类继承小例子
2010/07/17 Javascript
基于jquery实现漂亮的动态信息提示效果
2011/08/02 Javascript
JavaScript 的继承
2011/10/01 Javascript
开发 Internet Explorer 右键功能表(ContextMenu)
2013/07/03 Javascript
js流动式效果显示当前系统时间
2016/05/16 Javascript
Bootstrap前端开发案例二
2016/06/17 Javascript
jQuery实现的placeholder效果完整实例
2016/08/02 Javascript
Ajax异步获取html数据中包含js方法无效的解决方法
2017/02/20 Javascript
jQuery实现点击下拉框中的值累加到文本框中的方法示例
2017/10/28 jQuery
Vue快速实现通用表单验证功能
2019/12/05 Javascript
如何在JavaScript中创建具有多个空格的字符串?
2020/02/23 Javascript
vue 解决setTimeOut和setInterval函数无效报错的问题
2020/07/30 Javascript
[54:41]2018DOTA2亚洲邀请赛3月30日 小组赛B组 VGJ.T VS paiN
2018/03/31 DOTA
Linux环境下MySQL-python安装过程分享
2015/02/02 Python
python通过邮件服务器端口发送邮件的方法
2015/04/30 Python
python版微信跳一跳游戏辅助
2018/01/11 Python
Python嵌套列表转一维的方法(压平嵌套列表)
2018/07/03 Python
python使用zip将list转为json的方法
2018/12/31 Python
Python 安装第三方库 pip install 安装慢安装不上的解决办法
2019/06/18 Python
Python_查看sqlite3表结构,查询语句的示例代码
2019/07/17 Python
如何将 awk 脚本移植到 Python
2019/12/09 Python
opencv python Canny边缘提取实现过程解析
2020/02/03 Python
Python绘制动态水球图过程详解
2020/06/03 Python
简单了解Django项目应用创建过程
2020/07/06 Python
公务员培训自我鉴定
2014/02/01 职场文书
售后服务经理岗位职责
2014/02/25 职场文书
公证委托书模板
2014/04/03 职场文书
《大江保卫战》教学反思
2014/04/11 职场文书
锦旗标语大全
2014/06/23 职场文书
应届生面试求职信
2014/07/02 职场文书
2014广电局实施党的群众路线教育实践活动方案思想汇报
2014/09/22 职场文书
后进生评语大全
2015/01/04 职场文书