关于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);
					}
				});

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

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


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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值