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 相关文章推荐
WordPress 插件——CoolCode使用方法与下载
Jul 02 Javascript
jquery 中多条件选择器,相对选择器,层次选择器的区别
Jul 03 Javascript
用JQuery在网页中实现分隔条功能的代码
Aug 09 Javascript
动态加载js和css(外部文件)
Apr 17 Javascript
基于jquery的文章中所有图片width大小批量设置方法
Aug 01 Javascript
jquery判断RadioButtonList和RadioButton中是否有选中项示例
Sep 29 Javascript
javascript实现类似百度分享功能的方法
Jul 27 Javascript
javascript常用经典算法详解
Jan 11 Javascript
vuex学习之Actions的用法详解
Aug 29 Javascript
vue jsx 使用指南及vue.js 使用jsx语法的方法
Nov 11 Javascript
webpack构建换肤功能的思路详解
Nov 27 Javascript
vue3+typeScript穿梭框的实现示例
Dec 29 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中Cannot send session cache limiter 的问题的方法
2007/04/27 PHP
PHP 危险函数解释 分析
2009/04/22 PHP
phpMyAdmin 链接表的附加功能尚未激活的问题
2010/08/01 PHP
PHP异步调用socket实现代码
2012/01/12 PHP
PHP基本语法总结
2014/09/06 PHP
php格式化电话号码的方法
2015/04/24 PHP
PHP基于ICU扩展intl快速实现汉字转拼音及按拼音首字母分组排序的方法
2017/05/03 PHP
php中给js数组赋值方法
2014/03/10 Javascript
javascript字母大小写转换的4个函数详解
2014/05/09 Javascript
Egret引擎开发指南之运行项目
2014/09/03 Javascript
JavaScript实现上下浮动的窗口效果代码
2015/10/12 Javascript
jqGrid 学习笔记整理——进阶篇(一 )
2016/04/17 Javascript
纯JS代码实现隔行变色鼠标移入高亮
2016/11/23 Javascript
Javascript Function.prototype.bind详细分析
2016/12/29 Javascript
基于node.js依赖express解析post请求四种数据格式
2017/02/13 Javascript
从零开始学习Node.js系列教程六:EventEmitter发送和接收事件的方法示例
2017/04/13 Javascript
详解vue中computed 和 watch的异同
2017/06/30 Javascript
JS Input里添加小图标的两种方法
2017/11/11 Javascript
vue引入静态js文件的方法
2020/06/20 Javascript
js实现简单的点名器随机色实例代码
2020/09/20 Javascript
Python模拟登录验证码(代码简单)
2016/02/06 Python
Pycharm学习教程(3) 代码运行调试
2017/05/03 Python
python 垃圾收集机制的实例详解
2017/08/20 Python
基于python log取对数详解
2018/06/08 Python
django2用iframe标签完成网页内嵌播放b站视频功能
2018/06/20 Python
python实现时间o(1)的最小栈的实例代码
2018/07/23 Python
浅谈python3发送post请求参数为空的情况
2018/12/28 Python
简单介绍python封装的基本知识
2019/08/10 Python
python各层级目录下import方法代码实例
2020/01/20 Python
如何利用Python动态模拟太阳系运转
2020/09/04 Python
CSS3实现瀑布流布局与无限加载图片相册的实例代码
2016/12/22 HTML / CSS
NFL欧洲商店(德国):NFL Europe Shop DE
2018/11/03 全球购物
一套Java笔试题
2016/08/20 面试题
2015年幼儿园教育教学工作总结
2015/05/25 职场文书
《初涉尘世》读后感3篇
2020/01/10 职场文书
MongoDB使用profile分析慢查询的步骤
2021/04/30 MongoDB