jsonp跨域解决方案

来源:互联网 发布:有困难网络求助平台 编辑:程序博客网 时间:2024/06/12 03:51
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()为具体的返回数据
0 0