AJAX如何跨域请求数据(AJAX与SpringMVC)

AJAX如何跨域请求数据

昨天用到了跨域请求数据

然而对于第一次使用跨域请求的我来说,确实遇到了不少的阻力

不过最终还解决了

解决思路如下:

第一:跨域请求只能是get,所以请您在服务器端不要禁止get请求

第二:跨域请求的ajax应该使用jsonp

第三:后端接收这个jsonp然后连同json数据一起返回

第四:最后返回的数据一定是这样的

jsonp([{},{}])

jsonp

是前端的函数名

看以下代码可能会帮助您理解


Ajax代码如下:

<script type="text/javascript">
	$.ajax({  
                url:"https://www.bugkong.com/XXXXX",  
	        dataType:'jsonp',  
	        jsonp:'callback',  
	        success:function(result) {
	        	alert("ok");
			},
			error:function(){
			},
	        timeout:3000  
	    });
</script> 

以上代码我简要说明一下:

url:跨域请求的地址

dataType的参数是 jsonp,这个是必须的

jsonp的参数是callback,这个名字是可以随意更改的

SpringMVC服务端代码如下:


//callback是jq函数的名字
@RequestMapping(value="/urltext",produces="application/json;charset=UTF-8")
public @ResponseBody String retext(@RequestParam String showurl,@RequestParam String callback,@RequestParam String showtitle,HttpSession session, HttpServletRequest request){
	String urltext = ((JSONObject)(JSON.parseArray(usltext.UrlText()).get(0))).getString("1");

	show.show(showurl,urltext, showtitle,session, request);
		
	return callback+"("+usltext.UrlText()+")";
}
以上代码也需要说明几点:


1、参数比如获得callback,这个callback是和上面ajax中 jsonp的参数是一致的,这里是callback

2、返回语句

返回语句是callback+(括号里是json数组,格式是[{},{}])

就是说最后返回的完整数据是

callback([{......},{......}])

callback是前端的函数名,这个函数名由jq自动参数,大家可以查看前端


那么前端访问就很简单了

返回的数据:result就是一个json数组,不包括callback的json数组

就是返回的result只是 这部分  [{......},{......}]

如 result[0][2]  表示第一个对象,key为2的值


爆款云服务器s6 2核4G 低至0.46/天,具体规则查看活动详情Blog Img