jquery及原生javascript对jsonp解决跨域问题实例详解
jquery方式
前端:
$.ajax({
url: 'http://m.xxx.tv/goLottery',
data: { data: data },
type: 'GET',
dataType: 'jsonp',
beforeSend: function() {
},
success: function(data) {
//data格式不变,正常处理
}
})
后台(php):
public function actionGoLottery(){
$result = '后台数据';
//正常处理
//echo $result;
//跨域请求处理
$jsonpCallback = $_GET['callback'];
echo $jsonpCallback.'({errno: 0, data: '. json_encode($result) .'})';
}
html变化:

利用script的src不受域名限制的特点,jquery在head内动态插入一个script标签,src指向我们要请求的接口,并带上了一个callback参数,callback值为jquery产生的一个随机字符串(也可以自定义),在jsonp请求结束后,jquery立马删除了这个script标签。
服务器收到请求,拿到callback的函数名,然后把后台数据作为参数包在函数里面返回给前端,jquery拿到数据返回到success接口给我们处理
javascript方式处理jsonp
前端:
jsonpHandler = function(data){
handel(data);
}
setTimeout(function(){
var jsonp_path = url + "?callback=jsonpHandler";
var script = document.createElement('script');
script.type = 'text/javascript';
script.src = jsonp_path;
//插入后开始请求url
document.getElementsByTagName('body')[0].appendChild(script);
},0)
后台处理一样,见上方jquery后台处理部分。
setTimeout(function(){},0)的作用是最后执行这段代码,确保插入动态script后,请求接口回来的回调函数(jsonpHandler )可以找到,不会出现undefined的错误
具体原理,可以百度或google其他文章,这里只做点实例分析,希望辅助理解jsonp
jquery及原生javascript对jsonp解决跨域问题实例详解的更多相关文章
- JS JSOP跨域请求实例详解
JSONP(JSON with Padding)是JSON的一种“使用模式”,可用于解决主流浏览器的跨域数据访问的问题.这篇文章主要介绍了JS JSOP跨域请求实例详解的相关资料,需要的朋友可以参考下 ...
- AJAX跨域问题解决方法(2)——JSONP解决跨域
JSONP是什么?JSON全称为JSON with Padding,是JSON的一种补充的使用方式,不是官方协议. 使用JSONP服务器后台要改动吗?JSONP不同于一般的ajax请求返回json对象 ...
- 利用window.name+iframe跨域获取数据详解
详解 前文提到用jsonp的方式来跨域获取数据,本文为大家介绍下如何利用window.name+iframe跨域获取数据. 首先我们要简单了解下window.name和iframe的相关知识.ifra ...
- [转]js中几种实用的跨域方法原理详解
转自:js中几种实用的跨域方法原理详解 - 无双 - 博客园 // // 这里说的js跨域是指通过js在不同的域之间进行数据传输或通信,比如用ajax向一个不同的域请求数据,或者通过js获取页面中不同 ...
- 在ASP.NET 5应用程序中的跨域请求功能详解
在ASP.NET 5应用程序中的跨域请求功能详解 浏览器安全阻止了一个网页中向另外一个域提交请求,这个限制叫做同域策咯(same-origin policy),这组织了一个恶意网站从另外一个网站读取敏 ...
- iframe 跨域问题解决方案 利用window.name+iframe跨域获取数据详解
详解 前文提到用jsonp的方式来跨域获取数据,本文为大家介绍下如何利用window.name+iframe跨域获取数据. 首先我们要简单了解下window.name和iframe的相关知识.ifra ...
- VUE SpringCloud 跨域资源共享 CORS 详解
VUE SpringCloud 跨域资源共享 CORS 详解 作者: 张艳涛 日期: 2020年7月28日 本篇文章主要参考:阮一峰的网络日志 » 首页 » 档案 --跨域资源共享 CORS 详解 ...
- AJAX(XMLHttpRequest)进行跨域请求方法详解
AJAX(XMLHttpRequest)进行跨域请求方法详解(三) 2010年01月11日 08:48:00 阅读数:24213 注意:以下代码请在Firefox 3.5.Chrome 3.0.Saf ...
- 详解Jquery和AngularJs,Servlet中jsonp解决跨域问题(转)
众所周知,jsonp可以解决跨域问题,下面是我在查阅资料和实际项目使用后的一些总结. Jquery中jsonp的使用 //myUrl = "http://localhost:8090/api ...
随机推荐
- 二 APPIUM Android自动化 环境搭建
1.安装JAVA运行环境 2.安装Android开发环境 3.安装nodejs 下载地址:https://nodejs.org/en/ 下载完成之后双击安装. 4.安装APPIUM,App ...
- HTML5学习笔记一:与html4的区别(整合)
一 语法的改变 1.1 HTML5中标记方法 1.内容类型(ContentType):扩展符仍为“.html”或".htm",内容类型仍是“text/html”. 2.DOCTYP ...
- PHP使用array_intersect()函数求数组交集
在PHP中求数组的交集,我们可以与PHP给我们提供的现成函数:array_intersect(),其用法格式为: array array_intersect(array array1,array ar ...
- IE6滤镜在实战测试中能让父层里面的子元素产生阴影
1.写法一: <div class="cornerbg"> <p class="title-file">------</p& ...
- 5分钟了解MySQL5.7的Online DDL雷区
原创作品,允许转载,转载时请务必以超链接形式标明文章 原始出处 .作者信息和本声明.否则将追究法律责任.http://suifu.blog.51cto.com/9167728/1855872 Part ...
- Java-io流入门到精通详细总结
IO流:★★★★★,用于处理设备上数据. 流:可以理解数据的流动,就是一个数据流.IO流最终要以对象来体现,对象都存在IO包中. 流也进行分类: 1:输入流(读)和输出流(写). 2:因为处理的数据不 ...
- Delphi拷贝目录(含子目录)的方法
要实现目录级的拷贝,可以利用Windows API函数ShFileOperation( ),其函数声明如下: WINSHELLAPI int WINAPI SHFileOperation( LPSHF ...
- js原生继承之——构造函数式继承实例
<!DOCTYPE html><html lang="en"><head> <meta charset="UTF-8&qu ...
- lufylegend库 LBitmapData LBitmap LSprite
lufylegend库 LBitmapData LBitmap LSprite <!DOCTYPE html> <html lang="en"> <h ...
- 转载:深入探讨 Java 类加载器
转载地址 : http://www.ibm.com/developerworks/cn/java/j-lo-classloader/ 深入探讨 Java 类加载器 类加载器(class loader) ...