Java+jquery+jsonp实现跨域

来源:互联网 发布:诺维斯基生涯数据 编辑:程序博客网 时间:2024/05/03 15:36

jquery端代码

 $.ajax({ 
         async:false, 
         url: 'http://www.**.com/**/jsonp', // 跨域URL 
         dataType: 'jsonp', 
         timeout: 5000, 
         success: function (json) { 
          alert(JSON.stringify(json));
         }
     });

java web端代码

    @ResponseBody
    @RequestMapping(value = "/jsonp",method=RequestMethod.GET)
    public String jsonp(HttpServletRequest request) {
        String callback =request.getParameter("callback");
        return callback+"([{name:'jsonp',age:'30'},{name:'jack',age:'90'}])";
    }

执行结果

[{"name":"jsonp","age":"30"},{"name":"jack","age":"90"}]

 以上是不指定任何参数,jquery自动传递一个callback参数到后台,成功后,回调success函数。

  $.ajax({ 
         async:false, 
         url: 'http://www.**.com/**/jsonp', // 跨域URL 
         dataType: 'jsonp',

         jsonp:'jsoncallback',//自定义参数名称
         timeout: 5000, 
         success: function (json) { 
          alert(JSON.stringify(json));
         }
     });

 java web端代码

    @ResponseBody
    @RequestMapping(value = "/jsonp",method=RequestMethod.GET)
    public String jsonp(HttpServletRequest request) {
        String jsoncallback=request.getParameter("jsoncallback");//指定接受参数为jsoncallback
        return jsoncallback+"([{name:'jsonp',age:'30'},{name:'jack',age:'90'}])";
    }

 以上是自定义参数名称,后台指定接受通过jsonp冒号传递的函数名称。

         $.ajax({ 
         async:false, 
         url: 'http://www.**.com/**/jsonp', // 跨域URL 
         dataType: 'jsonp',

         jsonp:'jsoncallback',//自定义参数名称

         jsonpCallback:"success_jsonpCallback",//定义回调函数名称
         timeout: 5000, 
         success: function (json) { 
          alert(JSON.stringify(json));
         }
     });

var success_jsonpCallback=function(json){

    alert(JSON.stringify(json)+"********");

}

执行结果

[{"name":"jsonp","age":"30"},{"name":"jack","age":"90"}]********

[{"name":"jsonp","age":"30"},{"name":"jack","age":"90"}]

 以上是自定义回调函数名称,执行成功后,先执行jsonpCallback定义的回调函数,后执行success函数。

0 0
原创粉丝点击