1、新增知识点

  1. /**
  2. Axios获取服务器数据(无法跨域,只能让后台跨域获取数据)
  3. react获取服务器APi接口的数据:
  4. react中没有提供专门的请求数据的模块。但是我们可以使用任何第三方请求数据模块实现请求数据
  5. axios介绍: https://github.com/axios/axios axios的作者觉得jsonp不太友好,推荐用CORS方式更为干净(后端运行跨域)
  6. 1、安装axios模块npm install axios --save / npm install axios --save
  7. 2、在哪里使用就在哪里引入import axios from 'axios'
  8. 3、看文档使用
  9. var api='http://www.phonegap100.com/appapi.php?a=getPortalList&catid=20';
  10. axios.get(api)
  11. .then(function (response) {
  12. console.log(response);
  13. })
  14. .catch(function (error) {
  15. console.log(error);
  16. });
  17.  
  18. 2、fetch-jsonp https://github.com/camsong/fetch-jsonp
  19. fetch-jsonp请求:返回url会带回一个callback=
  20. 1、安装 npm install fetch-jsonp --save
  21. 2、import fetchJsonp from 'fetch-jsonp'
  22. 3、看文档使用
  23. fetchJsonp('/users.jsonp')
  24. .then(function(response) {
  25. return response.json()
  26. }).then(function(json) {
  27. console.log('parsed json', json)
  28. }).catch(function(ex) {
  29. console.log('parsing failed', ex)
  30. })
  31. 4、其他请求数据的方法也可以...自己封装模块用原生js实现数据请求也可以...
  32.  
  33. 远程测试API接口:
  34. get请求:
  35. http://www.phonegap100.com/appapi.php?a=getPortalList&catid=20
  36. jsonp请求地址:
  37. http://www.phonegap100.com/appapi.php?a=getPortalList&catid=20&callback=?
  38. */

2、案例实现

  1. class Home12 extends React.Component{
  2. constructor(props){
  3. console.log("组件加载,首先加载构造方法---1")
  4. super(props);
  5. this.state={
  6. msg:"HOME12 组件信息",
  7. list:[],
  8. listjson:[]
  9. }
  10. }
  11. componentWillMount() {
  12. console.log("构造函数加载完成后,会加载componentWillMount(组件将要挂载)----2")
  13. }
  14. getData=()=>{
  15. //通过axios获取数据
  16. var api='http://www.phonegap100.com/appapi.php?a=getPortalList&catid=20';
  17. alert("获取数据");
  18. axios.get(api).then((response)=> {
  19. console.log(response.data.result); //接口返回数据
  20. this.setState({
  21. //用到this,要用到this取向
  22. list:response.data.result
  23. })
  24. }).catch(function (error) {
  25. console.log(error);//捕获异常数据
  26. })
  27. }
  28. getfetchjsonpData=()=>{
  29. //通过fetchjsonp获取数据
  30. var api="http://www.phonegap100.com/appapi.php?a=getPortalList&catid=20";
  31. fetchJsonp(api)
  32. .then(function(response) {
  33. return response.json()//返回的json数据
  34. }).then((json) =>{
  35. //console.log('parsed json', json)
  36. this.setState({
  37. listjson:json.result
  38. })
  39. }).catch(function(ex) {
  40. console.log('parsing failed', ex)
  41. })
  42. }
  43. render() {
  44. console.log("数据将要渲染---3")
  45. return(
  46. <div>
  47. <h2>HOME12组件首页</h2>
  48. <h1>axios获取数据</h1>
  49. <button onClick={this.getData}>获取服务器api接口数据</button>
  50. <hr/>
  51. <ul>
  52. {
  53. this.state.list.map( (value,key) =>{
  54. return(<li key={key}>{value.title}</li>)
  55. })
  56. }
  57. </ul>
  58. <hr/>
  59. <h1>fetch-jsonp获取数据</h1>
  60. <button onClick={this.getfetchjsonpData}>获取服务器api接口数据</button>
  61. <hr/>
  62. <ul>
  63. {
  64. this.state.listjson.map( (value,key) =>{
  65. return(<li key={key}>{value.title}</li>)
  66. })
  67. }
  68. </ul>
  69. </div>
  70. )
  71. }
  72. //生命的周期函数---组件加载完成
  73. componentDidMount() {
  74. console.log("组件加载完成---4")
  75. this.getData();
  76. }
  77. }

Reactjs之Axios、fetch-jsonp获取后台数据的更多相关文章

  1. Vue axios异步获取后台数据alert提示undefined

    记录一个小问题,关于分页查询套餐 前台通过axios异步请求获取后台数据alert弹出数据提示undefined 下面有三个bean PageResult /** * 分页结果封装对象 */ publ ...

  2. bootstrap table通过ajax获取后台数据展示在table

    1. 背景 bootstrap table 默认向后台发送语法的dataType为 json,但是为了解决跨域问题我们需要将dataType改为jsonp,这时就需要修改bootstrap table ...

  3. 用ajax获取后台数据,返回json数据,怎么在前台使用?

    用ajax获取后台数据,返回json数据,怎么在前台使用呢?后台 C# code   ? 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 if (dataType == &qu ...

  4. Struts1.x下使用jquery的Ajax获取后台数据

        jquery中有多种Ajax方法来获取后台数据,我使用的是$.get()方法,具体的理论我不解释太多,要解释也是从别的地方copy过来的.下面就介绍我的项目中的实现方法.     前台页面: ...

  5. Java获取后台数据,动态生成多行多列复选框

    本例目标: 获取后台数据集合,将集合的某个字段,比如:姓名,以复选框形式显示在HTML页面 应用场景: 获取数据库的人员姓名,将其显示在页面,供多项选择 效果如下: 一.后台 查询数据库,返回List ...

  6. 前台通过ajax获取后台数据,PHP如何返回中文数据

    现在经常使用Ajax调用后台php获取后台数据,但是PHP返回的数据如果含有中文的话,Ajax会无法识别,那咋整呢,我用的是比较笨的方法,但是实用: 方法一: echo urldecode(json_ ...

  7. jsonp获取服务器数据的方式

    jsonp获取服务器的数据,有两种 一,跨域 二,不跨域 如果跨域 js的写法有两种 1, <script type="text/javascript"> $(func ...

  8. easyui panel异步获取后台数据在前台显示

    我在使用easyui的时候,想做一个向下图所示的效果,这个panel的样式已经做好了,想从后台异步获取json数据,然后填入到文本框中,不知道哪位大神能给点指导?万分感谢! 放入表单中,使用form对 ...

  9. js 获取后台数据分页

    页面创建一个存放内容的容器,以及分页的容器: <div id="content"></div> <div id="pager"&g ...

随机推荐

  1. Linux分布式消息队列RocketMQ部署与监控--双Master

    环境准备:CentOS_6.5_x64 IP: 192.168.0.249 dbTest249  Master1 IP: 192.168.0.251 webTest251 Master2 下载 ali ...

  2. 10 Zabbix4.4.1系统告警“Zabbix server is not running”

    点击返回:自学Zabbix之路 点击返回:自学Zabbix4.0之路 点击返回:自学zabbix集锦 Zabbix4.4.1系统告警“Zabbix server is not running” 第一步 ...

  3. Let's write a framework.

    Let's write a framework. create a model var model={a:1,b:'b'} let's create a router, router maps url ...

  4. 模拟赛小结:2017 China Collegiate Programming Contest Final (CCPC-Final 2017)

    比赛链接:传送门 前期大顺风,2:30金区中游.后期开题乏力,掉到银尾.4:59绝杀I,但罚时太高卡在银首. Problem A - Dogs and Cages 00:09:45 (+) Solve ...

  5. Zookeeper客户端使用(使用Curator)

    Zookeeper客户端(使用Curator) 三.使用curator客户端 在pom.xml中加入依赖 <dependency> <groupId>org.apache.cu ...

  6. inode、软硬链接

    关于inode是什么,可以看这篇文章:http://www.cnblogs.com/adforce/p/3522433.html 如何查看inode ll -di /boot / /app查看文件和文 ...

  7. Hihocoder1046K个串(线段树)(待解决)

    描述 兔子们在玩k个串的游戏.首先,它们拿出了一个长度为n的数字序列,选出其中的一个连续子串,然后统计其子串中所有数字之和(注意这里重复出现的数字只被统计一次). 兔子们想知道,在这个数字序列所有连续 ...

  8. 【Winform-GataGridView】根据DataGridView中的数据内容设置行的文字颜色、背景色 — 根据状态变色

    C#中可以根据每行内容的不同来对DataGridView数据表格控制每行的文字颜色.背景颜色进行不同的设置. 效果如下: 实现: 在DataGridView的RowPrePaint事件中进行行颜色控制 ...

  9. 服务端获取参数(koa)

    1.获取query(问号后面的内容) ctx.query 2.获取路由参数(如'/user/:id'的id) ctx.param 3.获取body请求体 koa不能直接获取请求体里的body,需要安装 ...

  10. C# 1.0(2002)

    序言 C# 1可以看做2001年Java语言的升级版. 主要功能 类 结构 接口 事件 属性 委托 表达式 语句 特性 值类型和引用类型 装箱和拆箱 资料