使用AJAX技术时,跨域问题是个很大的困扰,所幸JQUERY提供了简单的方法来解决这个问题。
假设现在有两台服务器a.uuplay.com和b.uuplay.com,a服需要在页面中调用b服的接口http://b.uuplay.com/checkuser,来检测用户是否存在,可以直接在a服的JS中这样写:
function checkuser(username){
$.getJSON("http://b.uuplay.com/checkuser?username="+username+"&callback=?", function(data){
switch(data.rs)
{
case "1":
var advice = "用户名没有注册。";
break;
case "0":
var advice = "用户名已被注册。";
break;
default:
break;
}
});
}
服务器b的后端代码如下:
response.setContentType("text/html");
response.setHeader("Cache-Control", "no-cache");
PrintWriter out = response.getWriter();
String result = "0"; //0已注册,1未注册
String username= request.getParameter("username");
if(username!= null && username.trim().length() > 0){
boolean exist = false;
//查找用户
if(exist){
result = "0";
}else{
result = "1";
}
}
}
JSONObject obj = new JSONObject();
obj.put("rs", result);
String callback = request.getParameter("callback");//这个参数是JQUERY传过来的,需要传回前端
StringBuilder sb = new StringBuilder();
sb.append(callback);
sb.append("(");
sb.append(obj.toString());
sb.append(")");
out.println(sb.toString());//最终传给前端的形式是:$callback({"rs":$result})
out.flush();
out.close();