关于ajax通过jsonp进行跨域访问的新理解

因为之前一直在做java后端的东西,没怎么接触到jquery的东西;以前也经常听到前端的同事说到跨域的问题,虽然明白是怎么一回事,但是没有具体研究过如何实现,如何通过ajax实现;最近因为工期紧张,所以我也被逼跟着做前台的东西,因为工作中遇到了跨域的问题,所以今天有时间研究一下,也有了一个新的认识

以前一直以为ajax通过sonp就可以直接解决跨域的问题,不用后台做任何的改变,没想到今天通过测试:结果完全颠覆我的理解;

如果只是通过前台,用下面的ajax语法发送一个http请求,虽然不会报以跨域不可访问的问题,但是却一直不能执行到ajax的success方法:

			$.ajax({
					url:'http://127.0.0.1:8080/gisms/user/findList.do',
					data : {'rows':10,'page':1},
					dataType:'jsonp',
					success:function(data){
						console.log(data);
					},
					error : function(e){
						console.log(e);
					},
					complete : function(c){
						console.log(c);
					}
				});

因为之前看到有的教程说是要同时修改后端已完成跨域的请求,遂按照教程完成后端的代码:

	Map params = ParamUtil.getParams(request);
    	List user = userService.findList(params);
    	// 将返回值构造成callback();的形式以支持跨域访问
    	String jsonData = new Gson().toJson(user);
    	return params.get("callback").toString()+"("+jsonData+")";
通过后端的修改,ajax就可以在请求完成的时候调用success方法。就这样跨域的问题就得以解决了。


怪不得网上还有好多其他的跨域解决方案,原来jsonp跨域要同时修改后端代码(与我想象的有些许落差)

你可能感兴趣的:(关于ajax通过jsonp进行跨域访问的新理解)