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的配置:
callback
true
其中,这一条
callback
中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 += '
';
来访问结果
201611.1 补充:
jsonp方式跨域只能是字符串,所以struts在返回时应指定字符串变量
jsonpResult
URGOO_CALLBACK
true
其中,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", "*");
此时的前端代码完全不用改变。