Struts2与JQurey ajax配合跨域请求

原创 2016年08月31日 10:29:03


ajax

		$.ajax({
			url:"https://www-xxx.com/xxx/getCounselorDetailByHxCode",
			data: {xxx:x},
			dataType : 'jsonp',
			jsonp:"callback", 
			type:'post',
			
			error: function(data) { 
				console.log(data);
			},
			success:function(data){
			//	alert("suc");
				console.log(data);

			},
		});

其中 dataType指定为jsonp,jsonp 指定为 callback(随意),然后看struts2的配置:

		<action name="getCounselorDetailByHxCode"
			class="xxx" method="getCounselorDetailByHxCode">
			<result name="success" type="json">
				<param name="callbackParameter">callback</param>
				<param name="noCache">true</param>
			</result>
		</action>

其中,这一条

<param name="callbackParameter">callback</param>
中callback与ajax中jsonp字段设置相同

打印出来的 data 是 structs请求类实例的所有能够get的成员对象:

HXCodeList: null
HXType: null
content: null
counselorDetail: "success"
counselorDetailByHxCode: "success"
spResult: Object
typetypeStr: null
urlStr: null
userHXCode: "zeKNVeDc208"
userHXSubCode: null
userInfoId: null
__proto__: Object


js中,

data = data.spResult;
con += '<br><img src="' + data.body.counselorMap.userIcon + '" width="150px" />';


来访问结果



201611.1 补充:

jsonp方式跨域只能是字符串,所以struts在返回时应指定字符串变量



			<result name="success" type="json">
				<param name="root">jsonpResult</param>
				<param name="callbackParameter">URGOO_CALLBACK</param>
				<param name="noCache">true</param>
			</result>



其中,jsonpResult 为 String 类型

	public String actionMethod() throws Exception {
		spResult = serviceMethod();
		jsonpResult = JsonUtils.convert(spResult) ;
		return SUCCESS;
	}


除此之外,还有一种方法可以指定跨域:


在 actionMethod中,

		HttpServletResponse response = ServletActionContext.getResponse();
		response.setHeader("Access-Control-Allow-Origin", "*");


此时的前端代码完全不用改变。


Struts2使用jQuery JSONP解决跨域问题

http://www.darrenfang.com/2013/12/jquery-jsonp-in-struts2/ 在项目中需要添加一个数据分析模块,为了不影响现有业务,需要在另一台服务器...
  • fangquan1980
  • fangquan1980
  • 2016年11月02日 16:11
  • 968

ajax 设置Access-Control-Allow-Origin实现跨域访问

ajax跨域访问是一个老问题了,解决方法很多,比较常用的是JSONP方法,JSONP方法是一种非官方方法,而且这种方法只支持GET方式,不如POST方式安全。 即使使用jquery的jsonp方法,t...
  • fdipzone
  • fdipzone
  • 2015年06月06日 19:09
  • 284239

跨域与跨域访问

什么是跨域 跨域是指从一个域名的网页去请求另一个域名的资源。比如从www.baidu.com 页面去请求 www.google.com 的资源。跨域的严格一点的定义是:只要 协议,域名,端口有任何一...
  • chuck_kui
  • chuck_kui
  • 2017年02月09日 17:14
  • 418

struts2+json 配置

平时在使用ajax发出请求从后台获取数据的时候,经常需要将数据转换为json格式,struts2自己提供了方便的jar包来对数据进行json格式转换,下面是配置详情.: 在struts2的基础上...
  • qq_26431469
  • qq_26431469
  • 2016年04月12日 13:50
  • 2710

SSO单点登录、跨域重定向、跨域设置Cookie、京东单点登录实例分析

最近在研究SSO单点登录技术,其中有一种就是通过js的跨域设置cookie来达到单点登录目的的,下面就已京东商城为例来解释下跨域设置cookie的过程 涉及的关键知识点: 1、jQuery...
  • awhip9
  • awhip9
  • 2016年10月21日 22:44
  • 1371

struts2 在result type = json 时 ,兼容json与jsonp 请求

callback 即可,查看 struts2 JSONResult 源代码后,发现兼容json和jsonp protected String createJSONString(...
  • z69183787
  • z69183787
  • 2015年05月21日 20:57
  • 3269

SSO单点登录、ajax跨域重定向、跨域设置Cookie、京东单点登录实例分析

最近在研究SSO单点登录技术,其中有一种就是通过js的跨域设置cookie来达到单点登录目的的,下面就已京东商城为例来解释下跨域设置cookie的过程 涉及的关键知识点: 1、jQuery ajax跨...
  • xqhys
  • xqhys
  • 2017年03月20日 17:47
  • 469

Jquery跨域调用struts2的Action返回json数据易出现的问题

必须有jsoncallback 1. $.getJSON("/queryName.action?jsoncallback=?",function(json){                  a...
  • come_on_xm
  • come_on_xm
  • 2017年07月27日 15:14
  • 155

Ajax 跨域问题解决最好方案

本文通过设置Access-Control-Allow-Origin来实现跨域。 例如:客户端的域名是client.w3cschool.cc,而请求的域名是server.w3cschool.cc。 如果...
  • l1028386804
  • l1028386804
  • 2015年06月19日 21:53
  • 2717

Struts2与JQurey ajax配合跨域请求

其中 dataType指定为jsonp,jsonp 指定为 callback(随意),然后看struts2的配置: callback true 其中,这一条...
  • silyvin
  • silyvin
  • 2016年08月31日 10:29
  • 2119
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:Struts2与JQurey ajax配合跨域请求
举报原因:
原因补充:

(最多只允许输入30个字)