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 相关文章推荐
基于jquery的图片懒加载js
Jun 30 Javascript
jquery中trigger()无法触发hover事件的解决方法
May 07 Javascript
jQuery实现点击后标记当前菜单位置(背景高亮菜单)效果
Aug 22 Javascript
深入理解(function(){... })();
Aug 16 Javascript
简单实现Vue的observer和watcher
Dec 21 Javascript
微信小程序 使用腾讯地图SDK详解及实现步骤
Feb 28 Javascript
详解微信开发中snsapi_base和snsapi_userinfo及静默授权的实现
Mar 11 Javascript
微信小程序使用video组件播放视频功能示例【附源码下载】
Dec 08 Javascript
vue form 表单提交后刷新页面的方法
Sep 04 Javascript
详解如何探测小程序返回到webview页面
May 14 Javascript
基于layui的table插件进行复选框联动功能的实现方法
Sep 19 Javascript
ElementUI多个子组件表单的校验管理实现
Nov 07 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
星际中一些鲜为人知的详细资料
2020/03/04 星际争霸
PHP连接局域网MYSQL数据库的简单实例
2013/08/26 PHP
php删除文本文件中重复行的方法
2015/04/28 PHP
使用PHP生成图片的缩略图的方法
2015/08/18 PHP
PHP使用strtotime获取上个月、下个月、本月的日期
2015/12/30 PHP
php强大的时间转换函数strtotime
2016/02/18 PHP
PHP开发实现快递查询功能详解
2019/04/08 PHP
javascript中的onkeyup和onkeydown区别介绍
2013/04/28 Javascript
禁用Tab键JS代码兼容Firefox和IE
2014/04/18 Javascript
JavaScript获取元素尺寸和大小操作总结
2015/02/27 Javascript
jQuery实现图片与文字描述左右滑动自动切换的方法
2015/07/27 Javascript
JavaScript DOM 学习总结(五)
2015/11/24 Javascript
AngularJS 让人爱不释手的八种功能
2016/03/23 Javascript
jQuery实现背景弹性滚动的导航效果
2016/06/01 Javascript
jQuery Validate表单验证插件的基本使用方法及功能拓展
2017/01/04 Javascript
基于vue-resource jsonp跨域问题的解决方法
2018/02/03 Javascript
微信小程序实现换肤功能
2018/03/14 Javascript
js事件on动态绑定数据,绑定多个事件的方法
2018/09/15 Javascript
微信小程序新手教程之页面打开数量限制
2019/03/03 Javascript
Vue v-for循环之@click点击事件获取元素示例
2019/11/09 Javascript
vue中全局路由守卫中替代this操作(this.$store/this.$vux)
2020/07/24 Javascript
vue 导航锚点_点击平滑滚动,导航栏对应变化详解
2020/08/10 Javascript
Nodejs 数组的队列以及forEach的应用详解
2021/02/25 NodeJs
跟老齐学Python之使用Python查询更新数据库
2014/11/25 Python
python实现定时播放mp3
2015/03/29 Python
python在linux系统下获取系统内存使用情况的方法
2015/05/11 Python
听歌识曲--用python实现一个音乐检索器的功能
2016/11/15 Python
Django基础知识 URL路由系统详解
2019/07/18 Python
Python unittest生成测试报告过程解析
2020/09/08 Python
html5定位获取当前位置并在百度地图上显示
2014/08/22 HTML / CSS
青春演讲稿范文
2014/05/08 职场文书
信息管理专业自荐书
2014/06/05 职场文书
2015年城管个人工作总结范文
2015/04/20 职场文书
导游词之云南丽江古城
2019/09/17 职场文书
netty 实现tomcat的示例代码
2022/06/05 Servers
CSS SandBox应用场景及常见问题
2022/06/25 HTML / CSS