跨域调用(AJAX)

当时是,我的项目正处于从独自开发转移到服务器上,在调试时,本地的网页去连服务器上的后端数据出了问题,干开始还纳闷,在本地时明明是好的,转到服务器上就不行了。所谓跨域访问限制,就指到网页要连接不在同一个域名下的后端,浏览器会自动禁止访问。(心虚,目前是这么理解的,日后有新的解释再来改)。解决办法目前已知有两种:

一、

js部分:

$.ajax({  
	url: '' ,  
        type: 'GET',  
        dataType:JSONP ,
        success: function (returndata) {
        	var obj = eval(returndata);  
        	alert(obj.status);  
                                                        };
        },  
        error: function (returndata) {  
                alert(returndata);  
        },
}); 

 

thinkphp后端部分:

public function index(){
        $data['status'] = 200;
        $this->ajaxReturn('jsonp',$data);
}

 

这里写的是Jquery ajax,将数据类型改为JSONP,可以进行跨域访问。tinkphp支持返回jsonp的数据传输类型。

二、

thinkphp后端部分:

header("Access-Control-Allow-Origin:*");

试过第一个方法的童鞋就知道缺点所在,jsonp只支持get的提交,而这在网站交互的使用时有很大限制的,毕竟post的使用概率远远大于get。如果必须使用post提交,这个时候只需要在php的后端的文件引入上文中的代码,就可以解决跨域的问题,而且前端的ajax数据类型改回json,php只需返回json即可。这行代码中的 * 可以改成指定域名的访问,不改则是任何域名的访问都支持。

题外话:自从知道第二种办法,博主就再也没有用过第一种了。

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值