Java+jquery+jsonp實現跨域

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函數。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章