jquery及原生javascript对jsonp解决跨域问题实例详解
2017-03-03 21:32
876 查看
jquery方式
前端:
后台(php):
html变化:
利用script的src不受域名限制的特点,jquery在head内动态插入一个script标签,src指向我们要请求的接口,并带上了一个callback参数,callback值为jquery产生的一个随机字符串(也可以自定义),在jsonp请求结束后,jquery立马删除了这个script标签。
服务器收到请求,拿到callback的函数名,然后把后台数据作为参数包在函数里面返回给前端,jquery拿到数据返回到success接口给我们处理
javascript方式处理jsonp
前端:
后台处理一样,见上方jquery后台处理部分。
setTimeout(function(){},0)的作用是最后执行这段代码,确保插入动态script后,请求接口回来的回调函数(jsonpHandler )可以找到,不会出现undefined的错误
具体原理,可以百度或google其他文章,这里只做点实例分析,希望辅助理解jsonp
前端:
$.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和jquery两种方法实现jsonp跨域)
- 详解Jquery和AngularJs,Servlet中jsonp解决跨域问题(转)
- Jquery跨域调用(JSONP)遇到error问题的解决
- 用jQuery与JSONP来解决跨域访问的问题
- 使用JSONP解决跨域问题的实例
- 使用jQuery与JSONP解决跨域问题
- 利用JSONP解决AJAX跨域问题的原理与jQuery解决方案
- 使用jsonp及jquery的$.ajax解决跨域问题
- jquery用jsonp方式跨域获取json数据原理(解决jquery跨服务器权限受限问题)
- 用jQuery与JSONP轻松解决跨域访问的问题
- 用jQuery与JSONP轻松解决跨域访问的问题
- 用jQuery与JSONP轻松解决跨域访问的问题
- jquery使用jsonp解决json跨域访问的问题
- 用jQuery与JSONP轻松解决跨域访问的问题
- 用jQuery与JSONP轻松解决跨域访问的问题
- IT忍者神龟之jQuery中利用JSONP解决AJAX跨域问题
- 如何使用jQuery的jsonp解决跨域问题
- jQuery中利用JSONP解决AJAX跨域问题
- 用jQuery与JSONP轻松解决跨域访问的问题