jsonp跨域获取数据的基础教程


Posted in Javascript onJuly 01, 2018

前言

由于浏览器有同源策略,所以要想获取非同源(协议,域名,端口三者有一不同都算非同源)的页面的数据,就得进行跨域

(1) jsonp原理

由于script标签的src属性可以访问非同源的js脚本,所以通过src属性访问服务器会返回函数的js代码,而我们想要的数据就作为函数参数返回,而我们会先定义这个函数,返回的js代码就可执行

(2) jsonp实现代码

请求页面

<!DOCTYPE html>
<html>
<head>
 <title></title>
</head>
<body>
<script type="text/javascript">
 function jsonp(data){
  console.log(username)
 }
</script>
<script type="text/javascript" src="jquery-1.8.3.min.js">
</script>
<script type="text/javascript">
 $(document).ready(function(){
  var url = "http://www.example.com/jsonp.php?callback=jsonp";
  var script = $('<script><\/script>');
  script.attr("src",url);
  $("body").append(script);
 });
</script>
</body>
</html>
<?php

$data = {'name': '张三'};
$callback = $_GET['callback'];
echo $callback."(".json_encode($data).")";

?php>

之后php会返回

jsonp({
 name:'niuni
})

然后PHP返回的代码h会被请求页面的jsonp方法执行

(3)jQuery的简便jsonp跨域

<script>
 function showData (data) {
  console.info(data);
 }
 $(document).ready(function () {
  $("#btn").click(function () {
   $.ajax({
    url: "http://www.example.comjsonp",
    type: "GET",
    dataType: "jsonp",// 返回数据类型
    jsonpCallback: "showData",//回调函数
    // 获取数据成功就执行success函数
    success: function (data) {
     console.info("data");
    }
   });
  });
 });
</script>

总结

以上就是这篇文章的全部内容了,希望本文的内容对大家的学习或者工作具有一定的参考学习价值,如果有疑问大家可以留言交流,谢谢大家对三水点靠木的支持。

Javascript 相关文章推荐
用Javascript做flash做的事..才完成的一个类.Auntion Action var 0.1
Feb 23 Javascript
js字符编码函数区别分析
Dec 28 Javascript
JQuery判断checkbox是否选中及其它复选框操作方法合集
Jun 01 Javascript
JavaScript绑定事件监听函数的通用方法
May 14 Javascript
vue观察模式浅析
Sep 25 Javascript
Vue+Element UI+Lumen实现通用表格分页功能
Feb 02 Javascript
jQuery实现高级检索功能
May 28 jQuery
微信小程序实现折线图的示例代码
Jun 07 Javascript
Vue 自定义指令功能完整实例
Sep 17 Javascript
JavaScript数组排序功能简单实现
May 14 Javascript
Element PageHeader页头的使用方法
Jul 26 Javascript
swiper4实现移动端导航栏tab滑动切换
Oct 16 Javascript
vue + webpack如何绕过QQ音乐接口对host的验证详解
Jul 01 #Javascript
关于Vue组件库开发详析
Jul 01 #Javascript
D3.js实现拓扑图的示例代码
Jun 30 #Javascript
详解angular如何调用HTML字符串的方法
Jun 30 #Javascript
angular6.0使用教程之父组件通过url传递id给子组件的方法
Jun 30 #Javascript
基于webpack4搭建的react项目框架的方法
Jun 30 #Javascript
AngularJs分页插件使用详解
Jun 30 #Javascript
You might like
PHP 异步执行方法,模拟多线程的应用分析
2013/06/03 PHP
php使用Jpgraph绘制复杂X-Y坐标图的方法
2015/06/10 PHP
修改发贴的编辑功能
2007/03/07 Javascript
JavaScript插入动态样式实现代码
2012/02/22 Javascript
javascript中常用编程知识
2013/04/08 Javascript
关于jQuery $.isNumeric vs. $.isNaN vs. isNaN
2013/04/15 Javascript
javascript ajax 仿百度分页函数
2013/10/29 Javascript
三种AngularJS中获取数据源的方式
2016/02/02 Javascript
JS模仿腾讯图片站的图片翻页按钮效果完整实例
2016/06/21 Javascript
简单谈谈Vue 模板各类数据绑定
2016/09/25 Javascript
详解JavaScript权威指南之对象
2016/09/27 Javascript
React 使用recharts实现散点地图的示例代码
2018/12/07 Javascript
vue如何截取字符串
2019/05/06 Javascript
Echarts实现多条折线可拖拽效果
2019/12/19 Javascript
Javascript执行流程细节原理解析
2020/05/14 Javascript
原生微信小程序开发中 redux 的使用详解
2021/02/18 Javascript
Python 实现文件的全备份和差异备份详解
2016/12/27 Python
利用python实现xml与数据库读取转换的方法
2017/06/17 Python
python实现二叉树的遍历
2017/12/11 Python
python 获取文件下所有文件或目录os.walk()的实例
2018/04/23 Python
tensorflow更改变量的值实例
2018/07/30 Python
对python 匹配字符串开头和结尾的方法详解
2018/10/27 Python
解决flask接口返回的内容中文乱码的问题
2020/04/03 Python
如何让python的运行速度得到提升
2020/07/08 Python
详解anaconda安装步骤
2020/11/23 Python
CSS3中HSL和HSLA的简单使用示例
2015/07/14 HTML / CSS
EJB的基本架构
2016/09/22 面试题
在校生钳工实习自我鉴定
2013/09/19 职场文书
毕业生优秀推荐信
2013/11/26 职场文书
奥巴马胜选演讲稿
2014/05/15 职场文书
毕业生找工作自荐书
2014/06/30 职场文书
2014年电教工作总结
2014/12/19 职场文书
幼儿园大班教师随笔
2015/08/14 职场文书
创业计划书之便利店
2019/09/05 职场文书
python 用递归实现通用爬虫解析器
2021/04/16 Python
Django路由层如何获取正确的url
2021/07/15 Python