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 removeChild 使用注意事项
Apr 11 Javascript
validator验证控件使用代码
Nov 23 Javascript
基于jQuery实现的当离开页面时出现提示的实现代码
Jun 27 Javascript
Jquery基础教程之DOM操作
Aug 19 Javascript
JS控制按钮10秒钟后可用的方法
Dec 22 Javascript
JS判断输入的字符串是否是数字的方法(正则表达式)
Nov 29 Javascript
jQuery图片轮播(二)利用构造函数和原型创建对象以实现继承
Dec 06 Javascript
vue引入swiper插件的使用实例
Jul 19 Javascript
javaScript canvas实现(画笔大小 颜色 橡皮的实例)
Nov 28 Javascript
vue实现自定义日期组件功能的实例代码
Nov 06 Javascript
详解关于webpack多入口热加载很慢的原因
Apr 24 Javascript
原生JavaScript实现购物车
Jan 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
初步介绍PHP扩展开发经验分享
2012/09/06 PHP
PHP6连接SQLServer2005的三部曲
2016/04/15 PHP
PHP PDOStatement::fetchColumn讲解
2019/01/31 PHP
读jQuery之十一 添加事件核心方法
2011/07/31 Javascript
解析javascript 实用函数的使用详解
2013/05/10 Javascript
jquery动态加载js三种方法实例
2013/08/03 Javascript
js获取系统的根路径实现介绍
2013/09/08 Javascript
chrome下img加载对height()的影响示例探讨
2014/05/26 Javascript
jQuery实现提示密码强度的代码
2015/07/15 Javascript
js enter键激发事件实例代码
2016/08/17 Javascript
AngularJS框架的ng-app指令与自动加载实现方法分析
2017/01/04 Javascript
微信小程序 二维码canvas绘制实例详解
2017/01/06 Javascript
JavaScript手风琴页面制作
2017/05/17 Javascript
详解vue过滤器在v2.0版本用法
2017/06/01 Javascript
Vue应用部署到服务器的正确方式
2017/07/15 Javascript
extract-text-webpack-plugin用法详解
2019/02/14 Javascript
ES6 Promise对象的含义和基本用法分析
2019/06/14 Javascript
Nuxt 嵌套路由nuxt-child组件用法(父子页面组件的传值)
2020/11/05 Javascript
python里对list中的整数求平均并排序
2014/09/12 Python
Python 12306抢火车票脚本 Python京东抢手机脚本
2018/02/06 Python
详解Python使用tensorflow入门指南
2018/02/09 Python
Python 记录日志的灵活性和可配置性介绍
2018/02/27 Python
解决Python下json.loads()中文字符出错的问题
2018/12/19 Python
Pandas统计重复的列里面的值方法
2019/01/30 Python
Python实现钉钉发送报警消息的方法
2019/02/20 Python
python之mock模块基本使用方法详解
2019/06/27 Python
Pytorch 搭建分类回归神经网络并用GPU进行加速的例子
2020/01/09 Python
tensorflow实现在函数中用tf.Print输出中间值
2020/01/21 Python
日本最大的药妆连锁店:Matsukiyo松本清药妆店
2017/11/23 全球购物
服务标语口号
2014/07/01 职场文书
教师个人读书活动总结
2014/07/08 职场文书
大学生党员自我批评思想汇报
2014/10/10 职场文书
2014年技术部工作总结
2014/12/12 职场文书
2014年小班保育员工作总结
2014/12/23 职场文书
高中教师个人总结
2015/02/10 职场文书
新学期小学班主任工作计划
2019/06/21 职场文书