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 相关文章推荐
dojo 之基础篇(二)之从服务器读取数据
Mar 24 Javascript
js的闭包的一个示例说明
Nov 18 Javascript
Javascript中的方法链(Method Chaining)介绍
Mar 15 Javascript
jQuery实现滑动页面固定顶部显示(可根据显示位置消失与替换)
Oct 28 Javascript
vue子父组件通信的实现代码
Jul 09 Javascript
javaScript封装的各种写法
Aug 14 Javascript
JavaScript中的一些隐式转换和总结(推荐)
Dec 22 Javascript
Vue-cli@3.0 插件系统简析
Sep 05 Javascript
npm scripts 使用指南详解
Oct 08 Javascript
JavaScript实现新年倒计时效果
Nov 17 Javascript
JS使用百度地图API自动获取地址和经纬度操作示例
Apr 16 Javascript
让JavaScript代码更加精简的方法技巧
Jun 01 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代码运行时间查看类代码分享
2011/08/06 PHP
header跳转和include包含问题详解
2012/09/08 PHP
PHP 使用header函数设置HTTP头的示例解析 表头
2013/06/17 PHP
PHP IE中下载附件问题解决方法
2014/01/07 PHP
完善CodeIgniter在IDE中代码提示功能的方法
2014/07/19 PHP
PHP中读取照片exif信息的方法
2014/08/20 PHP
PHP开发框架Laravel数据库操作方法总结
2014/09/03 PHP
php将图片保存入mysql数据库失败的解决方法
2014/12/27 PHP
关于php开启错误提示的总结
2019/09/24 PHP
javascript日期对象格式化为字符串的实现方法
2014/01/14 Javascript
NodeJs中的VM模块详解
2015/05/06 NodeJs
javascript类型系统 Window对象学习笔记
2016/01/07 Javascript
javascript html5 canvas实现可拖动省份的中国地图
2016/03/11 Javascript
JavaScript必知必会(二) null 和undefined
2016/06/08 Javascript
详解基于angular路由的requireJs按需加载js
2017/01/20 Javascript
大白话讲解JavaScript的Promise
2017/04/06 Javascript
Nodejs中crypto模块的安全知识讲解
2018/01/03 NodeJs
p5.js实现斐波那契螺旋的示例代码
2018/03/22 Javascript
JavaScript实现数组全排列、去重及求最大值算法示例
2018/07/30 Javascript
Python函数学习笔记
2008/10/07 Python
python局部赋值的规则
2013/03/07 Python
python网络编程学习笔记(一)
2014/06/09 Python
在python3.5中使用OpenCV的实例讲解
2018/04/02 Python
详解Python3中的 input() 函数
2020/03/18 Python
基于css3实现漂亮便签样式
2013/03/18 HTML / CSS
HTML5拖拉上传文件的简单实例
2017/01/11 HTML / CSS
html5简介_动力节点Java学院整理
2017/07/07 HTML / CSS
英国家用电器购物网站:Hughes
2018/02/23 全球购物
家居设计专业个人自荐信范文
2013/11/26 职场文书
九月份红领巾广播稿
2014/01/22 职场文书
预备党员转正思想汇报
2014/09/26 职场文书
银行反四风对照检查材料
2014/09/29 职场文书
毕业生见习报告总结
2014/11/08 职场文书
Python手拉手教你爬取贝壳房源数据的实战教程
2021/05/21 Python
Java中API的使用方法详情
2022/04/06 Java/Android
解决Windows Server2012 R2 无法安装 .NET Framework 3.5
2022/04/29 Servers