使用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的更多相关文章

  1. 十一、React 获取服务器数据: axios插件、 fetch-jsonp插件的使用

    react获取服务器APi接口的数据: react中没有提供专门的请求数据的模块.但是我们可以使用任何第三方请求数据模块实现请求数据 一.axios 获取Api数据 使用文档:https://www. ...

  2. 传递多个参数并获取Web API的数据

    近段时间学习Web Api觉得非常有意思.默认的路由情况之下,获取数据时,它不必指定Action操作名. 还有另外感想,就是自从学习asp.net MVC之后,加上jQuery,让Insus.NET已 ...

  3. 使用所见即所得文本编辑器编辑文本存入数据库后通过ajax获取服务器json_encode的数据到前台,文本内容上边的html标签不解析

    使用所见即所得文本编辑器编辑文本存入数据库后通过ajax获取服务器json_encode的数据到前台,文本内容上边的html标签不解析 因为我在前台使用了jquery的text()方法,而不是html ...

  4. HttpClient get和HttpClient Post请求的方式获取服务器的返回数据

    1.转自:https://blog.csdn.net/alinshen/article/details/78221567?utm_source=blogxgwz4 /*  * 演示通过HttpClie ...

  5. PHP--通用化API接口数据输出 封装

    /** * 通用化API接口数据输出 * author qinpeizhou * @param $message * @param array $data * @param int $httpCode ...

  6. Html网页使用jQuery传递参数并获取Web API的数据

    昨天Insus.NET有开始学习Web API,<ASP.NET MVC的Web Api的实练>http://www.cnblogs.com/insus/p/4334316.html .其 ...

  7. 微信小程序入门教程(一)API接口数据记录

    今天测试用小程序调用API接口,发现有些数据打印都是对象,怎么全部打印详细点来 小程序代码: httpsearch: function (name, offset, type, cb) { wx.re ...

  8. 使用js+Ajax请求API接口数据-带请求头方式

    C# http请求带请求头部分 先上代码: <script type="text/javascript"> function zLoginCheck() { var A ...

  9. C# 后台获取API接口数据

    using System; using System.Collections.Generic; using System.IO; using System.Linq; using System.Net ...

随机推荐

  1. DevExpress 控件汉化代码和使用方法

    DevExpress 第三方控件汉化的全部代码和使用方法   DevExpress.XtraEditors.Controls  此控件包中包含的控件最多,包括文本框,下拉列表,按钮,等等        ...

  2. 深度系统 deepin 15.9 关闭桌面

    深度系统 deepin 15.9 关闭桌面 由于特别的原因,关闭深度的桌面. sudo systemctl disable lightdm 如果需要在命令模式进入桌面可以使用以下命令. sudo se ...

  3. 廖雪峰Git入门教程

    廖雪峰Git入门教程  2018-05-24 23:05:11     0     0     0 https://www.liaoxuefeng.com/wiki/00137395163059296 ...

  4. 基于javaMail的邮件发送--excel作为附件

    基于JavaMail的Java邮件发送 Author xiuhong.chen@hand-china.com Desc 简单邮件发送 Date 2017/12/8 项目中需要根据物料资质的状况实时给用 ...

  5. Ubuntu16.04下安装xunsearch+opencc实现php客户端的中文分词

    1.准备服务器环境 apt-get install apache2 php mysql-server apt-get install mysql-client phpmyadmin apt-get i ...

  6. excel怎么把单元格内某个字标红,其他字不变

    alt+F11,打开宏编辑器运行如下代码: Sub AAA() Dim R As Range, L As Long, S As String Application.ScreenUpdating = ...

  7. IntelliJ IDEA取消自动import所有import *

    自动导入新类的时候,往往会把几个import合并为一个*,如何只单独import单个类:

  8. Python【每日一问】07

    问:请解释使用 *args 和 **kwargs 的含义 答: *args:可变参数,表示将实参中按照位置传值,多余的值都给 args,多余的实参被打包成 tuple(元组),然后传递给函数调用 # ...

  9. 机器学习笔记之三-yolov3+win7+vs2017+gpu+opencv编译

    1.环境安装 1.1 vs2017+cuda9.1+cudnn7.0可以和tensorflow一起安装网上教程多,不多说.       唯一需要注意的是vs2017要安装好2015版本的工具集v140 ...

  10. Windows 7无声音的解决方案

    在使用Windows7的过程中,可能会遇到系统没有声音的问题.导致此问题的原因有以下几点: (1)电脑没有配置声音输出设备: (2)未安装声卡驱动: (3)声音输出设备硬件发生故障: (4)扬声器被禁 ...