js跨域4种解决方案

在实际的开发中你也许会遇到js的跨域问题

js跨域4种解决方案

下面列出了一个可以通信和不能通信的情况

情况url结果
同一域名下http://www.phpsong.com/a.js http://www.phpsong.com/b.js可以
同一域名下不同文件夹http://www.phpsong.com/a.js http://www.phpsong.com/js/b.js可以
同一域名,不同端口http://www.phpsong.com:8080/a.js http://www.phpsong.com/b.js不可以
同一域名,不同协议http://www.phpsong.com/a.js https://www.phpsong.com/b.js不可以
域名和域名对应iphttp://www.phpsong.com/a.js http://192.168.0.2/b.js不可以
主域相同,子域不同http://www.phpsong.com/a.js http://js.phpsong.com/b.js不可以
同一域名,不同二级域名(同上)http://www.phpsong.com/a.js http://phpsong.com/b.js不可以
不同域名http://www.baidu.com/a.js http://www.phpsong.com/b.js不可以

上面表格中不能通信的情况,实现项目中还是要通行怎么处理,那么就需要跨域 下面总结了4种ajax跨域的解决方法,实例都是使用jquery来操作的,当前域名www.phpsong.com,调用域名js.phpsong.com,根据上面的表格,必须跨域才能访问

①传统的ajax方法

js

$("#ajax").click(function(){  
     $.ajax({  
         type: "POST",  
         url: "http://js.phpsong.com/a.php",  
         data: 'name=ajax',  
         dataType:"json",  
         success: function(data){  
            alert(data.name);  
         }  
     });  
 });

a.php代码

header("Access-Control-Allow-Origin:http://www.phpsong.com");    //允许www.phpsong.com提交访问  
//header("Access-Control-Allow-Origin:*");    //允许任何访问  
echo json_encode($_POST); 

②$.getJSON

$.getJSON('http://js.phpsong.com/a.php?name=getjson&callback=?', function(data){  //没有回调函数,直接处理  
    alert(data.name);    
 });

③$.getScript

$.getScript('http://js.phpsong.com/a.php?name=getscript&callback=getdata');  //回调函数根jsonp一样

④ajax jsonp

$("#jsonp").click(function(){  
     $.ajax({  
         url: 'http://js.phpsong.com/a.php',  
         data: {name: 'jsonp'},  
         dataType: 'jsonp',  
         jsonp: 'callback',      //为服务端准备的参数  
         jsonpCallback: 'getdata',   //回调函数  
         success: function(){  
            alert("success");  
         }  
     });  
 });  
  
function getdata(data){  
 $('#Result').text(data.name);  
}

a.php

<?php  
 if(isset($_GET['name']) && isset($_GET['callback']))   //callback根js端要对应,不然会报错的  
 {  
 echo $_GET['callback']. '(' . json_encode($_GET) . ');';   //格式固定的,为什么这样,不清楚  
 }  
?>

QQ交流群:136351212
查看原文:http://www.phpsong.com/2186.html
  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值