微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

jsonp跨域解决方案

1.jquery 原生ajax调用,缺点是没有捕获调用异常信息
$.ajax({
type : "get",
async:false,
url : "http://localhost:11180/xzinterface/jsonpService?action=qryDepartment",
dataType : "jsonp",//数据类型为jsonp
jsonp: "jsonpCallback",//服务端用于接收callback调用的function名的参数
success : function(data){
alert(data);
},
error:function(){
alert('fail');
}
});

2.使用插件jquery.jsonp.js,可以解决捕获调用异常信息

$.jsonp({
url: ' http://localhost:11180/xzinterface/jsonpService?action=qryDepartment',
dataType: "jsonp" ,
callbackParameter: "jsonpCallback" ,
async: false ,
timeout:5000,
success: function (data){
alert(data);
},
error: function (XMLHttpRequest,textStatus,errorThrown) {
//alert("wrong!!");
alert( "ERREUR: " + textStatus);
alert( "ERREUR: " + errorThrown);
},
complete: function (XMLHttpRequest,textStatus) {
// alert("over")
this ; // 调用本次AJAX请求时传递的options参数
}
});

以上两个方法调用后的url为:
http://localhost:11180/xzinterface/jsonpService?action=qryDepartment ? jsonpCallback ='xxxxxx'&_=yyyyy

其中xxxxxxx为自动生成的回调函数



3.后台代码很简单:

String jsonpCallback = request .getParameter( "jsonpCallback" ); //客户端请求参数,获取回调函数
result = jsonpCallback + "(" + service .qryDepartment()+ ")" ;// service .qryDepartment()为具体的返回数据

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐