使用jsonp,詳情請參考:http://json-p.org/
頁面代碼如下:

<!doctype html>
<html>
<head lang="en">
<meta charset="utf-8">
<title></title>
<script type="application/javascript" >
function jsonpcallback(result) {
alert(json.stringify(result));
/*for(var i in result) {
alert(i+":"+result[i]);//循環輸出a:1,b:2,etc.
} */
}
var jsonp=document.createelement("script");
jsonp.type="text/javascript";
jsonp.src="http://192.168.0.100:8080/tv_mobile/video/text2?callback=jsonpcallback";
document.getelementsbytagname("head")[0].appendchild(jsonp);
</script>
</head>
<body>
</body>
</html>
在浏覽器中通路的效果:

@responsebody
@requestmapping(value = "/text2",produces=systemhwutil.response_contenttype_javascript2 )
public string text2(httpservletrequest request, httpservletresponse response,string contenttype2,string callback)
throws ioexception {
string content = null;
map map = new hashmap();
map.put("filename", "a.txt");
content=jsonputil.getjsonp(map, callback);
system.out.println(content);
return content;
}
jsonputil.getjsonp 靜态方法的實作如下:

/***
* 用于jsonp調用
* @param map : 用于構造json資料
* @param callback : 回調的javascript方法名
* @return
*/
public static string getjsonp(map map,string callback)
{
objectmapper mapper = new objectmapper();
try {
content = mapper.writevalueasstring(map);
system.out.println(content);
} catch (jsongenerationexception e) {
e.printstacktrace();
} catch (jsonmappingexception e) {
} catch (ioexception e) {
}
if(valuewidget.isnullorempty(callback)){
return content;
return callback+"("+content+")";
依賴jackson 庫
背景傳回的内容是:jsonpcallback({"filename":"a.txt"})
content type是
注意:背景傳回的形式是:函數名(參數),此處的函數名就是回調函數的名稱
參考:
ajax 跨域請求 - jsonp擷取json資料:http://justcoding.iteye.com/blog/1366102