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 相关文章推荐
java script编程起步(第三课)
Jan 10 Javascript
javascript 继承实现方法
Aug 26 Javascript
js中将HTMLCollection/NodeList/伪数组转换成数组的代码
Jul 31 Javascript
Jquery异步请求数据实例代码
Dec 28 Javascript
JavaScript数组常用方法
Mar 02 Javascript
浅谈javascript原型链与继承
Jul 13 Javascript
原生js实现class的添加和删除简单代码
Jul 12 Javascript
javascript将中国数字格式转换成欧式数字格式的简单实例
Aug 02 Javascript
NODE.JS跨域问题的完美解决方案
Oct 20 Javascript
jQuery实现的省市联动菜单功能示例【测试可用】
Jan 13 Javascript
基于jQuery使用Ajax动态执行模糊查询功能
Jul 05 jQuery
解决layUI的页面显示不全的问题
Sep 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
星际流派综述
2020/03/04 星际争霸
php+ajax 实现输入读取数据库显示匹配信息
2015/10/08 PHP
作为程序员必知的16个最佳PHP库
2015/12/09 PHP
PHP自动识别当前使用移动终端
2018/05/21 PHP
js与css实现弹出层覆盖整个页面的方法
2014/12/13 Javascript
JavaScript使用cookie记录临时访客信息的方法
2015/04/07 Javascript
js正则表达式匹配数字字母下划线等
2015/04/14 Javascript
原生js实现addClass,removeClass,hasClass方法
2016/04/27 Javascript
Javascript将字符串日期格式化为yyyy-mm-dd的方法
2016/10/27 Javascript
深入理解JavaScript定时机制
2016/10/27 Javascript
js实现随机点名小功能
2017/08/17 Javascript
详解JS构造函数中this和return
2017/09/16 Javascript
Vue项目引发的「过滤器」使用教程
2019/03/12 Javascript
浅谈Webpack多页应用HMR卡住问题
2019/04/24 Javascript
JS实现简单的文字无缝上下滚动功能示例
2019/06/22 Javascript
react用Redux中央仓库实现一个todolist
2019/09/29 Javascript
不刷新网页就能链接新的js文件方法总结
2020/03/01 Javascript
vue实现可移动的悬浮按钮
2021/03/04 Vue.js
python如何实现excel数据添加到mongodb
2015/07/30 Python
Python中对数组集进行按行打乱shuffle的方法
2018/11/08 Python
Python时间和字符串转换操作实例分析
2019/03/16 Python
python实现QQ空间自动点赞功能
2019/04/09 Python
对Python中TKinter模块中的Label组件实例详解
2019/06/14 Python
用Python实现二叉树、二叉树非递归遍历及绘制的例子
2019/08/09 Python
Python3并发写文件与Python对比
2019/11/20 Python
Python基于requests实现模拟上传文件
2020/04/21 Python
Python设计密码强度校验程序
2020/07/30 Python
HTML5 CSS3实现一个精美VCD包装盒个性幻灯片案例
2014/06/16 HTML / CSS
通用C#笔试题附答案
2016/11/26 面试题
应届生如何写自荐信
2014/01/05 职场文书
计算机毕业生求职信
2014/06/10 职场文书
大学生自荐信范文
2015/03/05 职场文书
试用期自我评价范文
2015/03/10 职场文书
水知道答案观后感
2015/06/08 职场文书
2019年第四季度财务部门工作计划
2019/11/02 职场文书
万能密码的SQL注入漏洞其PHP环境搭建及防御手段
2021/09/04 SQL Server