使用JSONP解決跨域問題-代碼示例
前段時間用JSONP解決了跨域問題,現在不用了,把代碼思路記下來,今后說不定還用得上。
JS代碼
//查詢公告數據 function recentpost(){ $.getJSON(cmsUrl+"/post/recentpost.json?jsoncallback=?",{count:count,categoryid:categoryid}, function(data){ // }); }
JS代碼,主要就是使用jquery的getJSON方法。
更多描述,來自jquery 文檔。
jQuery.getJSON(url, [data], [callback])
概述
通過 HTTP GET 請求載入 JSON 數據。
在 jQuery 1.2 中,您可以通過使用JSONP形式的回調函數來加載其他網域的JSON數據,如 "myurl?callback=?"。jQuery 將自動替換 ? 為正確的函數名,以執行回調函數。 注意:此行以后的代碼將在這個回調函數執行前執行。
參數
url,[data],[callback]String,Map,FunctionV1.0
url:發送請求地址。
data:待發送 Key/value 參數。
callback:載入成功時回調函數。
示例
描述:
從 Flickr JSONP API 載入 4 張最新的關于貓的圖片。
HTML 代碼:
<div id="images"></div>
jQuery 代碼:
$.getJSON("http://api.flickr.com/services/feeds/photos_public.gne?tags=cat&tagmode=any&format
=json&jsoncallback=?", function(data){
$.each(data.items, function(i,item){
$("<img/>").attr("src", item.media.m).appendTo("#images");
if ( i == 3 ) return false;
});
});
描述:
從 test.js 載入 JSON 數據并顯示 JSON 數據中一個 name 字段數據。
jQuery 代碼:
$.getJSON("test.js", function(json){ alert("JSON Data: " + json.users[3].name); });
描述:
從 test.js 載入 JSON 數據,附加參數,顯示 JSON 數據中一個 name 字段數據。
jQuery 代碼:
$.getJSON("test.js", { name: "John", time: "2pm" }, function(json){ alert("JSON Data: " + json.users[3].name); });
Java代碼
@RequestMapping(value = "recentpost") public void recentPost(Integer categoryid, String jsoncallback, Integer count, Model model, HttpServletResponse response) { if (categoryid == null) { categoryid = DEFAULT_CATEGORY; } List<Post> list = postService.listRecent(categoryid, count); // JSONObject json = new JSONObject(); // json.put("list", list); // String str=json.toJSONString(); // model.addAttribute("callback", list); String str = JSONObject.toJSONString(list); str = jsoncallback + "(" + str + ")"; super.returnMessage(response, str); }
使用JSON庫,把jsonp格式的字符串發送到前端。記得函數名稱jsoncallback這個參數。
本文由用戶 jopen 自行上傳分享,僅供網友學習交流。所有權歸原作者,若您的權利被侵害,請聯系管理員。
轉載本站原創文章,請注明出處,并保留原始鏈接、圖片水印。
本站是一個以用戶分享為主的開源技術平臺,歡迎各類分享!