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 基础问答三
Dec 03 Javascript
JS 时间显示效果代码
Aug 23 Javascript
JavaScript脚本判断蜘蛛来源的方法
Sep 22 Javascript
java中String类型变量的赋值问题介绍
Mar 23 Javascript
jQuery基于toggle实现click触发DIV的显示与隐藏问题分析
Jun 12 Javascript
利用JS实现点击按钮后图片自动切换的简单方法
Oct 24 Javascript
JavaScript字符串对象(string)基本用法示例
Jan 18 Javascript
Vue开发中整合axios的文件整理
Apr 29 Javascript
JS按条件 serialize() 对应标签的使用方法
Jul 24 Javascript
使用JS动态显示文本
Sep 09 Javascript
React组件对子组件children进行加强的方法
Jun 23 Javascript
Nuxt 项目性能优化调研分析
Nov 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
五个PHP程序员工具
2008/05/26 PHP
PHP中::、->、self、$this几种操作符的区别介绍
2013/04/24 PHP
YII路径的用法总结
2014/07/09 PHP
php实现的通用图片处理类
2015/03/24 PHP
一键生成各种尺寸Icon的php脚本(实例)
2017/02/08 PHP
PHP面向对象五大原则之依赖倒置原则(DIP)详解
2018/04/08 PHP
js继承call()和apply()方法总结
2014/12/08 Javascript
js实现文本框中输入文字页面中div层同步获取文本框内容的方法
2015/03/03 Javascript
JavaScript获取伪元素(Pseudo-Element)属性的方法技巧
2015/03/13 Javascript
使用javascript将时间转换成今天,昨天,前天等格式
2015/06/25 Javascript
js常用的继承--组合式继承
2017/03/06 Javascript
nodejs搭建本地http服务器教程
2017/03/13 NodeJs
如何使用pm2快速将项目部署到远程服务器
2019/03/12 Javascript
vue自定义指令directive的使用方法
2019/04/07 Javascript
记一次用vue做的活动页的方法步骤
2019/04/11 Javascript
js实现跳一跳小游戏
2020/07/31 Javascript
[36:05]完美世界DOTA2联赛循环赛 Forest vs DM 第一场 11.06
2020/11/06 DOTA
Python 用户登录验证的小例子
2013/03/06 Python
用Python编程实现语音控制电脑
2014/04/01 Python
Python递归函数定义与用法示例
2017/06/02 Python
使用apidoc管理RESTful风格Flask项目接口文档方法
2018/02/07 Python
Python定义一个跨越多行的字符串的多种方法小结
2018/07/19 Python
Python3最长回文子串算法示例
2019/03/04 Python
Python使用QQ邮箱发送邮件实例与QQ邮箱设置详解
2020/02/18 Python
python cv2.resize函数high和width注意事项说明
2020/07/05 Python
浅析Python 简单工厂模式和工厂方法模式的优缺点
2020/07/13 Python
CSS3 text shadow字体阴影效果
2016/01/08 HTML / CSS
农村葬礼主持词
2014/03/31 职场文书
年度安全生产目标责任书
2014/07/23 职场文书
寻找最美家庭活动方案
2014/08/20 职场文书
2014年办公室个人工作总结
2014/11/12 职场文书
二年级上册数学教学计划
2015/01/20 职场文书
员工工作表现自我评价
2015/03/06 职场文书
2017春节晚会开幕词
2016/03/03 职场文书
OpenCV-Python实现人脸美白算法的实例
2021/06/11 Python
DE1107机评
2022/04/05 无线电