ajax跨域

     由于最近在一个小项目需要把页面和后台分开,部署到不同的服务器上。这样就出现跨域的问题。下面我们就看如何实现:

  1.导入jquery.js,本人使用的是1.10.1版本

  2.js代码

  

$(document).ready(function(){     
    //查看按钮绑定事件  
    $(".btn_check").bind("click", function() {  
        var url = "http://192.168.0.109:8080/test/testServlet?callback=queryUserInfo";  
        $.ajax({  
         url:url,  
         dataType:'jsonp',  
         processData: false,   
         type:'get',
          jsonpCallback:"queryUserInfo",
         success:function(data){  
                  alert(data.name);  
                 },  
                  error:function(XMLHttpRequest, textStatus, errorThrown) {  
            console.log("XMLHttpRequest.status:"+XMLHttpRequest.status);  
            console.log("XMLHttpRequest.readyState:"+XMLHttpRequest.readyState);  
            console.log("textStatus:"+textStatus);  
               }  
     })  
   });  
});

   注意:jsonpCallback的值必须与callback的值保持一致

3.java代码

String callback = request.getParameter("callback");
UserService service = new UserService();
String respInfo = service.queryUserByLanId(lanId);
try {
	response.getWriter().write(callback+"("+JSONObject.fromObject(respInfo)+")");
} catch (IOException e) {
	e.printStackTrace();
}

 注意:返回的是jsonp格式不是json格式,所以我把返回数据拼接成jsonp格式

  json格式:

{
    "uid:"123",
     "state:"0"
}

 jsonp格式

callback({
    "uid:"123",
     "state:"0"
})

 jsonp格式比json格式外面多一层callback().

相关推荐