什么都不说了,直接通过代码展现,
//前端ajax 代码:
$(document).ready(function(){ var url='http://localhost/admin/login?username=admin&password=123456&callback=?'; $.ajax({ url:url, type:'get', dataType:'jsonp', success:function(data){ if(data.status == "success"){ alert("登录成功,用户组ID:" + data.group + ",用户组名:" + data.description); }else{ alert("登录失败"); } }, error:function(error) { alert(error); console.log(error); } }); });
jquery ajax 解决跨域问题,首先有两个部分需要注意:
1. url 需要在后面添加 &callback=?
2.数据返回类型dataType 必须是 jsonp
//后端php代码
//登录方法(仅供简单模拟使用)
public function login(){ $username = $_GET['username']; $password = $_GET['password']; $callback = $_GET['callback']; //前端ajax url中传递过来的,必须接受该参数的值,方便组合 jsonp格式的数据。 if($username == "admin" && $password =="123456"){ echo $callback . '({"status":"success", "group":101, "description":"超级管理员"})'; }else{ echo $callback . '({"status":"failure"})'; } }
在后端需要注意一个地方 就是返回的数据的格式。
比较一下json与jsonp格式的区别:
json格式:
{"status":"success", "group":101, "description":"超级管理员"}
jsonp格式:
callback({"status":"success", "group":101, "description":"超级管理员"})
其中这里的callback 是前端url中的callback参数的值,无需理会,按照这种格式组装即可。
至此,jquery ajax跨域问题解决了。 有不明白的地方, 欢迎留言。