jsonp原理

JSON是一种轻量级的数据传输格式。

JSONP(JSON with Padding)是JSON的一种“使用模式”,可用于解决主流浏览器的跨域数据访问的问题。由于同源策略,一般来说位于 server1.example.com 的网页无法与不是 server1.example.com的服务器沟通,而 HTML 的<script> 元素是一个例外。利用 <script> 元素的这个开放策略,网页可以得到从其他来源动态产生的 JSON 资料,而这种使用模式就是所谓的 JSONP。用 JSONP 抓到的资料并不是 JSON,而是任意的JavaScript,用 JavaScript 直译器执行而不是用 JSON 解析器解析。

jsonp封装 

import originJSONP from 'jsonp'

export default function jsonp (url, data, option) {
//url接口拼接
url += (url.indexOf('?') < 0 ? '?' : '&') + prarm(data)
//es6的promise对象
return new Promise((resolve, reject) => {
originJSONP(url, option, (err, data) => {
if (!err) {
resolve(data)
} else {
reject(err)
}
})
})
} function prarm (data) {
let url = ''
for (var k in data) {
let value = data[k] !== undefined ? data[k] : ''
url += `&${k}=${encodeURIComponent(value)}`
}
return url ? url.substring(1) : ''
}

jsonp应用

export const options = {
param: 'jsonpCallback'
}
import { commonParams, options } from './config'

 import jsonp from 'common/js/jsonp'

export function getRecommend () {
  //请求地址
const url = ''
//请求数据凭借
const data = Object.assign({}, commonParams, {
uin: 0
})
return jsonp(url, data, options)
}
data () {
return {
recommoneds: []
}
},
created () {
this._getRecommend()
},
methods: {
_getRecommend () {
getRecommend().then(res => {
if (res.code === ERR_OK) {
this.recommoneds = res.data
console.log(res.data)
}
})
}
},

很简单的一个跨域拿数据

最新文章

  1. Atitit zxing二维码qr码识别解析
  2. 学习ASP.NET Web API框架揭秘之“HTTP方法重写”
  3. cxTreeList 控件说明
  4. 记一次小团队Git实践(下)
  5. 使用AngularJS 进行Hybrid App 开发已经有一年多时间了,这里做一个总结
  6. Hbase物理模型
  7. 用count(*)还是count(列名) || Mysql中的count()与sum()区别
  8. spm_预处理实验记录
  9. C++实现中缀表达式转前、后缀
  10. UVA 11992 线段树
  11. label同时设置sizeToFit,NSTextAlignmentCenter不起作用
  12. MIPS 跳转指令BAL vs JAL
  13. jquery fadeIn用法
  14. LCD 显示异常定位分析方法
  15. 4月10日java多线程3
  16. 逆元(inv)
  17. 【转】C语言字符串与数字相互转换
  18. 【LeetCode】239. Sliding Window Maximum
  19. Excel中如何匹配另外一个Excel中的数据
  20. day28 黏包及黏包解决方案

热门文章

  1. 在github上搭建一个静态的个人网站
  2. MySQL高可用复制管理工具 —— Orchestrator使用
  3. sql server 生成数据库字典 sql语句
  4. Asp.Net MVC Https设置
  5. .net 简单实用Log4net(多个日志配置文件)
  6. MySQL 笔记整理(11) --怎么给字符串字段加索引?
  7. Java递归方法遍历二叉树的代码
  8. &lt;3&gt;Centos系统完整安装python流程
  9. [20190418]exclusive latch spin count.txt
  10. java:合并两个排序的链表(递归+非递归)