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

来源:互联网 发布:毫州康美中药城淘宝店 编辑:程序博客网 时间:2024/06/04 20:05

首先,IP+端口号 均不同,或者IP相同+端口号不同,这样的请求均属于跨域请求

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

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

@RequestMapping(value="/rtnHotspot",produces={"application/json;charset=UTF-8"})@ResponseBodypublic 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){......});

0 0
原创粉丝点击