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 相关文章推荐
子窗口、父窗口和Silverlight之间的相互调用
Aug 16 Javascript
JS连连看源码完美注释版(推荐)
Dec 09 Javascript
jquery实现动态画圆
Dec 04 Javascript
JS动态加载当前时间的方法
Feb 09 Javascript
js实现点击图片将图片地址复制到粘贴板的方法
Feb 16 Javascript
js过滤HTML标签完整实例
Nov 26 Javascript
jQuery zTree加载树形菜单功能
Feb 25 Javascript
基于jQuery的左滑出现删除按钮的示例
Aug 29 jQuery
关于js对textarea换行符的处理方法浅析
Aug 03 Javascript
jQuery实现合并表格单元格中相同行操作示例
Jan 28 jQuery
通过js随机函数Math.random实现乱序
May 19 Javascript
详解vue修改elementUI的分页组件视图没更新问题
Nov 13 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中如何判断AJAX提交的数据
2012/02/05 PHP
有关PHP性能优化的介绍
2013/06/20 PHP
成为好程序员必须避免的5个坏习惯
2014/07/04 PHP
Thinkphp整合阿里云OSS图片上传实例代码
2019/04/28 PHP
js 实现无缝滚动 兼容IE和FF
2009/07/15 Javascript
javascript 图片裁剪技巧解读
2012/11/15 Javascript
jQuery实现仿百度首页滑动伸缩展开的添加服务效果代码
2015/09/09 Javascript
JavaScript数据结构之二叉查找树的定义与表示方法
2017/04/12 Javascript
剖析Angular Component的源码示例
2018/03/23 Javascript
JS实现换肤功能的方法实例详解
2019/01/30 Javascript
使用vue打包进行云服务器上传的问题
2020/03/02 Javascript
[51:52]Liquid vs Secret 2019国际邀请赛淘汰赛 败者组 BO3 第二场 8.24
2019/09/10 DOTA
利用python求解物理学中的双弹簧质能系统详解
2017/09/29 Python
python3+PyQt5重新实现QT事件处理程序
2018/04/19 Python
TensorFlow实现随机训练和批量训练的方法
2018/04/28 Python
对python中的xlsxwriter库简单分析
2018/05/04 Python
解决python3中的requests解析中文页面出现乱码问题
2019/04/19 Python
Python学习笔记之Zip和Enumerate用法实例分析
2019/08/14 Python
Django框架反向解析操作详解
2019/11/28 Python
python中的垃圾回收(GC)机制
2020/09/21 Python
Pycharm自动添加文件头注释和函数注释参数的方法
2020/10/23 Python
关于webview适配H5上传照片或者视频文件的方法
2020/11/04 HTML / CSS
VELTRA台湾:世界自由行专家
2017/08/15 全球购物
什么时候需要进行强制类型转换
2016/09/03 面试题
高中生毕业学习总结的自我评价
2013/11/14 职场文书
一年级班主任感言
2014/03/08 职场文书
夫妻双方自愿离婚协议书怎么写
2014/12/01 职场文书
安徽导游词
2015/02/12 职场文书
2015年环卫工作总结
2015/04/28 职场文书
演讲开场白和结束语
2015/05/29 职场文书
2016圣诞节贺卡寄语
2015/12/07 职场文书
中职班主任培训心得体会
2016/01/07 职场文书
nginx里的rewrite跳转的实现
2021/03/31 Servers
Python Numpy之linspace用法说明
2021/04/17 Python
python 制作一个gui界面的翻译工具
2021/05/14 Python
Vue2.0搭建脚手架
2022/03/13 Vue.js