Ajax-ajax跨域问题

需求定制 需求定制 主题:1050 回复:2283

Ajax-ajax跨域问题

夜无邪 发布于 2017-07-07 字数 444 浏览 1155 回复 2

在www.domain.com下有个a.php,该文件下有个getInfo()函数来实现返回当前登录用户的username值

getInfo函数部分代码如下:

if($this->isLogin())
{
$info = array(
'uname'=>$this->getUname(),
);
}
$res = json_encode($info);
if( !empty($_GET['jsvar']) ) $res = 'var '.trim($_GET['jsvar']).' = '.$res;
exit($res);

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

支持 Markdown 语法,需要帮助?

评论(2

夜无邪 2017-10-14 2 楼

可使用jQuery的getScript或者通过JSONP形式来调用:

jQuery.getScript("http://www.domain.com/?act=a.getInfo&jsvar=userinfo",
function(){
...
});

给一个完整示例代码吧,已经测试通过:

<script type="text/javascript" src="http://ajax.googleapis.com/ajax/libs/jquery/1.4.2/jquery.min.js"&gt;&lt;/script&gt;
<script type="text/javascript">
function get_cookie(name)
{
// only name given, get cookie
var cookievalue = null;
if (document.cookie && document.cookie != '') {
var cookies = document.cookie.split(';');
for (var i = 0; i < cookies.length; i++) {
var cookie = jQuery.trim(cookies[i]);
// does this cookie string begin with the name we want?
if (cookie.substring(0, name.length + 1) == (name + '=')) {
cookievalue = decodeURIComponent(cookie.substring(name.length + 1));
break;
}
}
}
return cookievalue;
}

if(get_cookie('person')){
jQuery.getScript("http://www.domain.com/?act=a.getInfo&amp;jsvar=userinfo",
function(){
alert(userinfo.uname);
});
}
</script>

想挽留 2017-10-07 1 楼

更好的方法就是将用户名放入 session 或者 cookie

session_set_cookie_params(0,'/','.domain.com'); // .domain.com 下都能直接获取session
setcookie('username','xxx','','/','.domain.com') //
.doman.com 下都能获取 cookie

如果真的出现ajax的跨域问题,解决方案有很多,已经讨论过:@请问如何实现AJAX跨域取数据