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 相关文章推荐
获取任意Html元素与body之间的偏移距离 offsetTop、offsetLeft (For:IE5+ FF1 )[
Dec 22 Javascript
javascript+mapbar实现地图定位
Apr 09 Javascript
jQuery异步加载数据并添加事件示例
Aug 24 Javascript
jQuery中$.ajax()和$.getJson()同步处理详解
Aug 12 Javascript
jquery实现点击弹出可放大居中及关闭的对话框(附demo源码下载)
May 10 Javascript
设计模式中的facade外观模式在JavaScript开发中的运用
May 18 Javascript
AngularJS表单和输入验证实例
Nov 02 Javascript
Ionic+AngularJS实现登录和注册带验证功能
Feb 09 Javascript
JS 仿支付宝input文本输入框放大组件的实例
Nov 14 Javascript
node.js遍历目录的方法示例
Aug 01 Javascript
微信小程序实现张图片合成为一张并下载
Jul 16 Javascript
解决vue的touchStart事件及click事件冲突问题
Jul 21 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实现遍历目录并删除指定文件中指定内容
2015/01/21 PHP
php获取网页里所有图片并存入数组的方法
2015/04/06 PHP
PHP基于工厂模式实现的计算器实例
2015/07/16 PHP
各种快递查询--Api接口
2016/04/26 PHP
通过jQuery源码学习javascript(一)
2012/12/27 Javascript
javascript动态创建表格及添加数据实例详解
2015/05/13 Javascript
js和jquery分别验证单选框、复选框、下拉框
2015/12/17 Javascript
三个js循环的关键字示例(for与while)
2016/02/16 Javascript
Angular.js与Bootstrap相结合实现表格分页代码
2016/04/12 Javascript
很棒的js Tab选项卡切换效果
2016/08/30 Javascript
详解用原生JavaScript实现jQuery的某些简单功能
2016/12/19 Javascript
jQuery实现搜索页面关键字的功能
2017/02/16 Javascript
nodejs+express实现文件上传下载管理网站
2017/03/15 NodeJs
AngularJS使用ng-class动态增减class样式的方法示例
2017/05/18 Javascript
jQuery 开发之EasyUI 添加数据的实例
2017/09/26 jQuery
linux 后台运行node服务指令方法
2018/05/23 Javascript
bootstrap treeview 树形菜单带复选框及级联选择功能
2018/06/08 Javascript
vuejs实现ready函数加载完之后执行某个函数的方法
2018/08/31 Javascript
浅谈vue中$event理解和框架中在包含默认值外传参
2020/08/07 Javascript
Vue路由 重定向和别名的区别说明
2020/09/09 Javascript
asyncio 的 coroutine对象 与 Future对象使用指南
2016/09/11 Python
Python模拟登录的多种方法(四种)
2018/06/01 Python
使用python进行文本预处理和提取特征的实例
2018/06/05 Python
pytorch之添加BN的实现
2020/01/06 Python
python对XML文件的操作实现代码
2020/03/27 Python
Python中logger日志模块详解
2020/08/04 Python
Python批量获取并保存手机号归属地和运营商的示例
2020/10/09 Python
详解利用python识别图片中的条码(pyzbar)及条码图片矫正和增强
2020/11/17 Python
HTML5页面直接调用百度地图API获取当前位置直接导航目的地的实现代码
2018/03/02 HTML / CSS
倡议书范文
2014/04/16 职场文书
2014年国庆标语
2014/06/30 职场文书
2016八一建军节慰问信
2015/11/30 职场文书
关于感恩老师的古诗句
2019/08/20 职场文书
MySQL的存储函数与存储过程的区别解析
2022/04/08 MySQL
Python使用MapReduce进行简单的销售统计
2022/04/22 Python
Python+Pillow+Pytesseract实现验证码识别
2022/05/11 Python