React 获取服务器API接口数据:axios、fetchJsonp
使用axios、fetchJsonp获取服务器的接口数据。其中fetchJsonp是跨域访问
一、使用axios
1、安装axios模块
npm install --save axios
2、引用模块
import axios from 'axios'
3、实现请求
import axios from 'axios';
const request = (url: string, params = {}, data = {}, options) => {
// debug(url, params);return new Promise((resolve, reject) => {
axios({url, params, data, ...options})
.then((response) => {
// debug(response);
// 请求返回为json格式, 则response.data必须为对象,且必须有固定的格式,
// 这里没有处理返回值为字符串的情况, 目前没有这样的需求
reject(response);
})
.catch((error) => {
debug(error);
reject(error);
});
});
};
export function get (url: string, params?: any, options?: any) {
return request(url, params, undefined, {method: 'get', ...options});
}
export function post (url: string, data?: any, options?: any) {
return request(url, undefined, data, {method: 'post', ...options});
}
//这段代码还没有经过测试,如果不行可以尝试下面代码
request = (url) => {
axios.get(url)
.then((res) => {
console.log(res);
})
.catch((err) => {
console.log(err);
})
}
二、使用fetchJsonp
1、安装fetchJsonp模块
npm install --save fetchJsonp
2、引用模块
import fetchJsonp from 'fetch-jsonp';
3、使用(还没有测试的)
import fetchJsonp from 'fetch-jsonp';
jsonp (url: string, callback = null) {
return new Promise((resolve, reject) => {
fetchJsonp(url, {callback})
.then((res) => {
resolve(res);
})
.catch((err) => {
debug(err);
})
})
}
这里说下fetchJsonp的问题
在代码中应该使用script标签,引用js文件
let script = document.createElement('script');
script.type = 'text/javascript';
script.src = 'http://192.168.1.100:7700/Advert/GetAdvert?elementId=adid';
document.getElementById(this.props.htmlId).appendChild(script);
<div id={this.props.htmlId} style={this.props.styles}></div>
下面代码是接口http://192.168.1.100:7700/Advert/GetAdvert?elementId=adid返回的信息,其实是向代码中插入一个函数,自动运行,类似前端调用函数
(function(){
var json = {"AdvertName":"图片广告","AdvertDesc":"图片广告","AdvertHeight":"100%","AdvertId":63102,
"AdvertImage":"https://ss0.bdstatic.com/70cFuHSh_Q1YnxGkpoWK1HF6hhy/it/u=831914849,3674285067&fm=11&gp=0.jpg",
"AdvertWidth":"100%","JumpUrl":"http://192.168.2.88:7700/advert/JumpAdvert?advertId=63102&flowerId=1987&orderMark=7c3a8f5172494fcab09e5eee607aae66&merchantCode=",
"AdvertWord":"图片广告"};
var elementId = '';
var div = document.createElement("div");
div.setAttribute
div.style.width = "100%";
div.style.overflow = "hidden";
var img = document.createElement("img");
img.src = json.AdvertImage;
img.style.maxWidth="100%";
img.onclick = function(){location.href=json.JumpUrl;}
div.appendChild(img);
if(elementId == '')
{
var scripts = document.getElementsByTagName("script");
var script = scripts[scripts.length - 1];
var dom = script.parentNode;
dom.removeChild(script);
dom.appendChild(div);
}
else
{
var dom = document.getElementById('');
dom.appendChild(div);
}
div = null;
img = null;
scripts = null;
script = null;
dom = null;
})();
fetchJsonp也类似这样,它使用的window[function_name] = function(){} ,可以查看它的原代码
React 获取服务器API接口数据:axios、fetchJsonp的更多相关文章
- 十一、React 获取服务器数据: axios插件、 fetch-jsonp插件的使用
react获取服务器APi接口的数据: react中没有提供专门的请求数据的模块.但是我们可以使用任何第三方请求数据模块实现请求数据 一.axios 获取Api数据 使用文档:https://www. ...
- 传递多个参数并获取Web API的数据
近段时间学习Web Api觉得非常有意思.默认的路由情况之下,获取数据时,它不必指定Action操作名. 还有另外感想,就是自从学习asp.net MVC之后,加上jQuery,让Insus.NET已 ...
- 使用所见即所得文本编辑器编辑文本存入数据库后通过ajax获取服务器json_encode的数据到前台,文本内容上边的html标签不解析
使用所见即所得文本编辑器编辑文本存入数据库后通过ajax获取服务器json_encode的数据到前台,文本内容上边的html标签不解析 因为我在前台使用了jquery的text()方法,而不是html ...
- HttpClient get和HttpClient Post请求的方式获取服务器的返回数据
1.转自:https://blog.csdn.net/alinshen/article/details/78221567?utm_source=blogxgwz4 /* * 演示通过HttpClie ...
- PHP--通用化API接口数据输出 封装
/** * 通用化API接口数据输出 * author qinpeizhou * @param $message * @param array $data * @param int $httpCode ...
- Html网页使用jQuery传递参数并获取Web API的数据
昨天Insus.NET有开始学习Web API,<ASP.NET MVC的Web Api的实练>http://www.cnblogs.com/insus/p/4334316.html .其 ...
- 微信小程序入门教程(一)API接口数据记录
今天测试用小程序调用API接口,发现有些数据打印都是对象,怎么全部打印详细点来 小程序代码: httpsearch: function (name, offset, type, cb) { wx.re ...
- 使用js+Ajax请求API接口数据-带请求头方式
C# http请求带请求头部分 先上代码: <script type="text/javascript"> function zLoginCheck() { var A ...
- C# 后台获取API接口数据
using System; using System.Collections.Generic; using System.IO; using System.Linq; using System.Net ...
随机推荐
- win10刻录光盘失败,一直显示有准备好写入到光盘中的文件
这是因为前面刻录留下的缓存导致的 解决方法是,删除系统刻录缓存文件 刻录缓存路径大概在以下位置(其中ase那个地方需要修改,改成自己的登录用户账号名即可) C:\Users\ase\AppData\L ...
- 什么是真正的Java技术,本篇文章让你了解
“你学习一门技术的最佳时机是三年前,其次是现在.”这句话对于哪一种行业都很适用,如果你已经学习过Java,那么恭喜你你很有先见之明,如果你并不了解Java,这篇文章带你快速掌握Java的几个核心知识点 ...
- attr跟prop的区别:
prop()函数的结果: 1.如果有相应的属性,返回指定属性值. 2.如果没有相应的属性,返回值是空字符串. attr()函数的结果: 1.如果有相应的属性,返回指定属性值. 2.如果没有相应的属性, ...
- 给jumpserver双机配置glusterfs共享复制卷
为什么要使用glusterfs呢. 本身Haproxy+Keepalived对jumpserver进行了负载均衡和反向代理.但是真实的视频只会存储在一个节点上 否则播放视频的时候会出现找不到的情况 为 ...
- java构造函数和初始化
1.如果构造函数的第一条语句是一条普通的语句.也就是说,不是对this()或super()的调用,那么java会插入一个隐式的super()调用,从而调用超类的默认构造函数.从该调用返回时,Java将 ...
- Teamviewer远程控制
设置无人值守的固定密码,不使用随机码进行远程控制访问 设置好密码之后,以后只要通过Teamviewer生成的固定ID,再加上你设置的密码就可以随时进行远程访问了,而不需要使用生成的随机码.
- 时钟信号的占空比调整——Verilog
时钟信号的占空比调整——Verilog `timescale 1ns / 1ps /////////////////////////////////////////////////////////// ...
- JVM-垃圾收集算法
新生代:复制算法,IBM研究过,约98%对象是“朝生夕死”,所以不需要按照1:1来划分:HotSpot中默认是8:1:1,即每次新生代可用空间为90%,只有10%会被“浪费”, 当Survivor空间 ...
- C# 6.0:在catch和finally中使用await
Asyn方法是一个现在很常用的方法,当使用async和await时,你或许曾有这样的经历,就是你想要在catch块或finally块中使用它们,比如当出现一个exception而你希望将日志记在文件或 ...
- python32模拟鼠标和键盘操作
前言Windows pywin32允许你像vc一样的形式来使用python开发win32应用.代码风格可以类似win32 sdk,也可以类似MFC,由你选择.如果你仍不放弃vc一样的代码过程在pyth ...