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 相关文章推荐
JS如何将UTC格式时间转本地格式
Sep 04 Javascript
jquery 插件实现多行文本框[textarea]自动高度
Mar 04 Javascript
简单实现JS倒计时效果
Dec 23 Javascript
js实现漫天星星效果
Jan 19 Javascript
js异步编程小技巧详解
Aug 14 Javascript
react-native组件中NavigatorIOS和ListView结合使用的方法
Sep 30 Javascript
将jquery.qqFace.js表情转换成微信的字符码
Dec 01 jQuery
angularjs实现分页和搜索功能
Jan 03 Javascript
vue实现学生录入系统之添加删除功能
Jul 11 Javascript
JS 正则表达式验证密码、邮箱格式的实例代码
Oct 28 Javascript
angular4应用中输入的最小值和最大值的方法
May 17 Javascript
JS查找孩子节点简单示例
Jul 25 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中使用DOM类读取XML文件的实现代码
2011/12/14 PHP
PHP连接SQLServer2005的实现方法(附ntwdblib.dll下载)
2012/07/02 PHP
输入值/表单提交参数过滤有效防止sql注入的方法
2013/12/25 PHP
php实现的一个简单json rpc框架实例
2015/03/30 PHP
浅析Yii2集成富文本编辑器redactor实例教程
2016/04/25 PHP
php监测数据是否成功插入到Mysql数据库的方法
2016/11/25 PHP
js判断浏览器类型的方法
2013/08/07 Javascript
jquery实现ajax提交form表单的方法总结
2014/03/03 Javascript
基于javascript实现仿百度输入框自动匹配功能
2016/01/03 Javascript
js插件dropload上拉下滑加载数据实例解析
2016/07/27 Javascript
关于jQuery.ajax()的jsonp碰上post详解
2017/07/02 jQuery
cordova入门基础教程及使用中遇到的一些问题总结
2017/11/14 Javascript
在vue2.0中引用element-ui组件库的方法
2018/06/21 Javascript
Node.js 的 GC 机制详解
2019/06/03 Javascript
微信小程序实现日期格式化和倒计时
2020/11/01 Javascript
js实现登录拖拽窗口
2020/02/10 Javascript
vue中实现回车键登录功能
2020/02/19 Javascript
JQuery省市联动效果实现过程详解
2020/05/08 jQuery
一文读懂vue动态属性数据绑定(v-bind指令)
2020/07/20 Javascript
解决vue组件没显示,没起作用,没报错,但该显示的组件没显示问题
2020/09/02 Javascript
Vue+Vant 图片上传加显示的案例
2020/11/03 Javascript
[01:02:48]2018DOTA2亚洲邀请赛 4.1 小组赛 A组 LGD vs OG
2018/04/02 DOTA
python并发编程之多进程、多线程、异步和协程详解
2016/10/28 Python
python 通过类中一个方法获取另一个方法变量的实例
2019/01/22 Python
深入学习python多线程与GIL
2019/08/26 Python
Django如何实现防止XSS攻击
2020/10/13 Python
浅谈CSS3鼠标移入图片动态提示效果(transform)
2017/11/06 HTML / CSS
利用HTML5的新特点实现图片文件异步上传
2014/05/29 HTML / CSS
吃透移动端 1px的具体用法
2019/12/16 HTML / CSS
美国女性卫生用品公司:Thinx
2017/06/30 全球购物
Spartoo美国:欧洲排名第一的在线时装零售商
2019/12/12 全球购物
机械化及自动化毕业生的自我评价分享
2013/11/06 职场文书
优秀少先队员主要事迹材料
2014/05/28 职场文书
暑假开始了,你的暑假学习计划写好了吗?
2019/07/04 职场文书
JPA 通过Specification如何实现复杂查询
2021/11/23 Java/Android
使用SQL实现车流量的计算的示例代码
2022/02/28 SQL Server