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

首先,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){
	......
});

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值