ajax跨域请求结合springmvc后台代码学习整理
ajax跨域请求,在工作中遇到使用ajax发起请求获取数据,但是请求的数据不在同一个域下,这样子就要使用到ajax的跨域请求了! $.ajax({
url:'${pageContext.request.contextPath}/dufy/test',type:'get',data:{data:data},dataType:'json',success:function(data){
//do something...
},error: function(data){
//do something...
}
})
也可以使用
$(function(){
$.ajax({
type:'get',url : '${pageContext.request.contextPath}/dufy/test',dataType : 'jsonp',jsonpCallback: 'callback',success : function() {
//do something...
},error : function(data) {
//do something...
}
});
})
function callback(data){
var jsonobj = eval('(' + data + ')');
if(jsonobj.orderCount!=""){
//do something...
}
}
(2):后台代码 @RequestMapping(value="/dufy/test",method=RequestMethod.GET)
@ResponseBody
public void test(HttpServletRequest request,HttpServletResponse response){
response.setHeader("P3P","CP=CAO PSA OUR");
response.addHeader("Access-Control-Allow-Origin","*");
String data = request.getParameter("data");
//1:业务逻辑
JSONObject returnMap = new JSONObject();
if(StringUtil.isEmpty(data)){
returnMap.put("state","error");
}else{
returnMap.put("state","success");
}
//2:输入json数据到前台页面
PrintWriter pWriter = null;
try {
pWriter = response.getWriter();
String type = request.getParameter("type");
if("pc".equals(type)){
pWriter.write(returnMap.toJSONString());
}else if("wap".equals(type)){
pWriter.write("callback('" + returnMap.toJSONString() + "')");
}
} catch (Exception e) {
// TODO: handle exception
e.printStackTrace();
}finally{
if(pWriter!=null){
pWriter.flush();
pWriter.close();
}
}
}
在使用过程注意:后台代码中的 callback要与前期台调用 jsonpCallback: ‘callback’, 对应! ...
//优化代码:添加后台获取callback
String callback = request.getParameter("callback");
...
//优化代码
pWriter.write(""+callback+"('" + returnMap.toJSONString() + "')");
//之前前代码
pWriter.write("callback('" + returnMap.toJSONString() + "')");
这样子就实现了动态化! 使用过程中如果有问题,欢迎一起讨论! (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |