这里采用的是jsonp的方式,
场景为 请求端A,申请跨域调用 被请求端B 的一个action
请求端B的需要配置action以及编写对应逻辑,struts2下一种配置方式如下
1.貌似配置标签会被过滤,无法直接上源码了
<package name="" namespace="" extends="json-default">
<action ...name ...method...>
<param name="callbackParameter">callback</param>
</action>
</package>
需要注意的是,因为json-default拓展,需要struts2-json-plugin.jar的支持
callbackParameter的名字不可换(应该是和ajax解析有关)
callback需要和请求端设定的jsonp一致。
2.action实现,用上述配置的话,action的返回内容可以通过action类中的callback变量传递
请求A端
$.ajax({
type : "get",
async : true,
url : localhost:8080/sshweb/testAction,
data : {'id',123},
dataType : "jsonp",
// 返回时,参数的名字,会默认调用callbackfunction(callback),需要对方指定一个该名字的返回值,否则调用时找不到参数就会出错
jsonp : "callback",
// 回调函数
// jsonpCallback : pcallback
}).done(function(data) {
// 调用成功处理逻辑
}).fail(function() {
// 调用失败处理逻辑
});
//调用成功的情况的回调不用这种链式done的写法,通过指定jsonpCallback也可以。
跨域调用成功后,会自动执行一次jsonpCallback组装callback参数的方法
网友评论