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 相关文章推荐
javascript强大的日期函数代码分享
Sep 04 Javascript
Javascript:为input设置readOnly属性(示例讲解)
Dec 25 Javascript
JavaScript Math.ceil 方法(对数值向上取整)
Jan 09 Javascript
jQuery实现的瀑布流加载效果示例
Sep 13 Javascript
vue2.0父子组件及非父子组件之间的通信方法
Jan 21 Javascript
详解JavaScript RegExp对象
Feb 04 Javascript
Node.js如何响应Ajax的POST请求并且保存为JSON文件详解
Mar 10 Javascript
mui 打开新窗口的方式总结及注意事项
Aug 20 Javascript
Angular4.0中引入laydate.js日期插件的方法教程
Dec 25 Javascript
用jQuery将JavaScript对象转换为querystring查询字符串的方法
Nov 12 jQuery
vue使用微信扫一扫功能的实现代码
Apr 11 Javascript
在vue中使用Base64转码的案例
Aug 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
PHP实现对二维数组某个键排序的方法
2016/09/14 PHP
php使用Jpgraph创建柱状图展示年度收支表效果示例
2017/02/15 PHP
用js实现trim()的解决办法
2013/04/16 Javascript
使用javascript实现页面定时跳转总结篇
2013/09/21 Javascript
js判断选择时间不能小于当前时间的示例代码
2013/09/24 Javascript
屏蔽script注入小例子
2013/11/12 Javascript
js实现省市联动效果的简单实例
2014/02/10 Javascript
JavaScript事件委托的技术原理探讨示例
2014/04/17 Javascript
JavaScript中匿名、命名函数的性能测试
2014/09/04 Javascript
Ionic项目中Native Camera的使用方法
2017/06/07 Javascript
详解AngularJS1.x学习directive 中‘&amp; ’‘=’ ‘@’符号的区别使用
2017/08/23 Javascript
深入浅析vue组件间事件传递
2017/12/29 Javascript
详解webpack中的hash、chunkhash、contenthash区别
2018/01/05 Javascript
JS实现小星星特效
2019/12/24 Javascript
基于JavaScript判断两个对象内容是否相等
2020/01/10 Javascript
JS数组降维的实现Array.prototype.concat.apply([], arr)
2020/04/28 Javascript
用python代码做configure文件
2014/07/20 Python
Python sys.argv用法实例
2015/05/28 Python
Python中.py文件打包成exe可执行文件详解
2017/03/22 Python
Python内置函数——__import__ 的使用方法
2017/11/24 Python
Python爬取个人微信朋友信息操作示例
2018/08/03 Python
python实现微信小程序自动回复
2018/09/10 Python
Python通用函数实现数组计算的方法
2019/06/13 Python
Python实现手机号自动判断男女性别(实例解析)
2019/12/22 Python
使用Python获取当前工作目录和执行命令的位置
2020/03/09 Python
迪士尼英国官方商店:shopDisney UK
2019/09/21 全球购物
JAVA和C++区别都有哪些
2015/03/30 面试题
员工合理化建议书
2014/05/19 职场文书
学校党员对照检查材料
2014/08/28 职场文书
杭州西湖英语导游词
2015/02/03 职场文书
防震减灾主题班会
2015/08/14 职场文书
2016大学生国家助学贷款承诺书
2016/03/25 职场文书
python获取淘宝服务器时间的代码示例
2021/04/22 Python
JPA如何使用entityManager执行SQL并指定返回类型
2021/06/15 Java/Android
教你如何用Python实现人脸识别(含源代码)
2021/06/23 Python
nginx安装以及配置的详细过程记录
2021/09/15 Servers