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实现仿苹果底部任务栏菜单效果代码
Aug 28 Javascript
JS实现网页每隔3秒弹出一次对话框的方法
Nov 09 Javascript
超漂亮的jQuery图片轮播特效
Nov 24 Javascript
基于Bootstrap的Metronic框架实现条码和二维码的生成及打印处理操作
Aug 29 Javascript
jQuery实现的自动加载页面功能示例
Sep 04 Javascript
Vue.js搭建移动端购物车界面
Jun 28 Javascript
详解js加减乘除精确计算
Mar 19 Javascript
解决Layui数据表格显示无数据提示的问题
Nov 14 Javascript
如何使用Jquery动态生成二级选项列表
Feb 06 jQuery
Vue 实现v-for循环的时候更改 class的样式名称
Jul 17 Javascript
vue-quill-editor的使用及个性化定制操作
Aug 04 Javascript
Vue中避免滥用this去读取data中数据
Mar 02 Vue.js
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个人网站架设连环讲(二)
2006/10/09 PHP
php上传、管理照片示例
2006/10/09 PHP
PHP的中问验证码
2006/11/25 PHP
站长助手-网站web在线管理程序 v1.0 下载
2007/05/12 PHP
PHP文件去掉PHP注释空格的函数分析(PHP代码压缩)
2013/07/02 PHP
PHP实现手机号码中间四位用星号(*)隐藏的自定义函数分享
2014/09/27 PHP
PHP利用func_get_args和func_num_args函数实现函数重载实例
2014/11/12 PHP
php通过array_shift()函数移除数组第一个元素的方法
2015/03/18 PHP
PHP版单点登陆实现方案的实例
2016/11/17 PHP
Yii2中使用asset压缩js,css文件的方法
2016/11/24 PHP
javascript 解析url的search方法
2010/02/09 Javascript
jquery 查找新建元素代码
2010/07/06 Javascript
JQuery中extend使用介绍
2014/03/13 Javascript
类似于QQ的右滑删除效果的实现方法
2016/10/16 Javascript
简单实现Vue的observer和watcher
2016/12/21 Javascript
过期软件破解办法实例详解
2017/01/04 Javascript
webpack独立打包和缓存处理详解
2017/04/03 Javascript
用JavaScript做简易的购物车的代码示例
2017/10/20 Javascript
element-ui 限制日期选择的方法(datepicker)
2018/05/16 Javascript
详解Vue2.0组件的继承与扩展
2018/11/23 Javascript
[02:58]献给西雅图的情书_高清
2014/05/29 DOTA
Python本地与全局命名空间用法实例
2015/06/16 Python
Python外星人入侵游戏编程完整版
2020/03/30 Python
利用Celery实现Django博客PV统计功能详解
2017/05/08 Python
python输出100以内的质数与合数实例代码
2018/07/08 Python
Python UnboundLocalError和NameError错误根源案例解析
2018/10/31 Python
用Python实现读写锁的示例代码
2018/11/05 Python
Python中的支持向量机SVM的使用(附实例代码)
2019/06/26 Python
sublime3之内网安装python插件Anaconda的流程
2020/11/10 Python
HTML5计时器小例子
2013/10/15 HTML / CSS
生产总经理岗位职责
2013/12/19 职场文书
小学生暑假感言
2014/02/06 职场文书
制作部班长职位说明书
2014/02/26 职场文书
助人为乐好少年事迹材料
2014/08/18 职场文书
离职告别感言
2015/08/04 职场文书
为什么MySQL分页用limit会越来越慢
2021/07/25 MySQL