您的位置:首页 > Web前端 > JQuery

jquery实现跨域请求&SpringMVC解决跨域乱码问题

2014-11-26 16:40 246 查看
首先,IP+端口号 均不同,或者IP相同+端口号不同,这样的请求均属于跨域请求

之前这篇博客jquery从后台获取json数据讲的是同域访问,如果本机要实现跨域访问,我们可以给后台传递一个参数例如:callback,

后台进行相应的处理,如下:

@RequestMapping(value="/rtnHotspot",produces={"application/json;charset=UTF-8"})
@ResponseBody
public Object rtnHotspot(@RequestParam("callback") String callback){
//从data_process表中获得数据
List<Data_process> data_processList = this.dataAnalysisService.findAllLocation();
List<Hotspot> hotspotList = new ArrayList<Hotspot>();
......
String function = callback+"("+JSON.toJSONString(hotspotList)+")";//后台返回一个callback(json字符串)这样的形式
return function;
}


注意:这里的@RequestMapping加上参数:produces={"application/json;charset=UTF-8"},否则前台获取数据时会出现乱码问题。

前台通过回调函数获得返回的json字符串,而其中的callback其实是一个jsonp。

前台有一下几种方式实现跨域获取数据:

1,$.ajax dataType:json,这时须在URL中加上参数callback

$.ajax({
type:"GET",
url:"http://具体ip/项目名称/dataAnalysis/rtnHotspot?callback=?",//加一个参数callback=?
dataType:"json",
async: false,
success:function(data){
......//返回数据
}
});


2,$.getJSON

$.getJSON("http://localhost/xxx/dataAnalysis/rtnHotspot?callback=?",function(data){
myData = JSON.stringify(data);
alert(myData);
});


3,$.ajax dataType:jsonp,URL中不用加参数
$.ajax({
type:"GET",
url:"http://localhost/xxx/dataAnalysis/rtnHotspot",//不用加参数
dataType:"jsonp",//jsonp类型
async: false,
success:function(data){
......
});
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: