jsp + jquery 實現跨域訪問 --返回json
引用:http://blog.csdn.net/lshaohe/article/details/4954760
近日由於開發需要,要用到跨域訪問數據,查了一下資料,發現主要有兩種方法:
1,直接用js訪問格式如
- <mce:script src="<%=page_url%><!--
- ?method=jsonInfo&moduleid=359&pageid=1&pagesize=7&count=25&colsize=2">
- // --></mce:script>
後臺用
- HTML2TEXT.JAVA
- public static String string2Json(String s) {
- StringBuilder sb = new StringBuilder(s.length()+20);
- sb.append('/"');
- for (int i=0; i<s.length(); i++) {
- char c = s.charAt(i);
- switch (c) {
- case '/"':
- sb.append("///"");
- break;
- case '//':
- sb.append("////");
- break;
- case '/':
- sb.append("///");
- break;
- case '/b':
- sb.append("//b");
- break;
- case '/f':
- sb.append("//f");
- break;
- case '/n':
- sb.append("//n");
- break;
- case '/r':
- sb.append("//r");
- break;
- case '/t':
- sb.append("//t");
- break;
- default:
- sb.append(c);
- }
- }
- sb.append('/"');
- //System.out.println(sb.toString());
- return sb.toString();
- }
out.print("document.write("+Html2Text.string2Json (str.toString())+")");
注:script 訪問的連接後臺(action 或servlet 或jsp等。。)返回的數據是您要先顯示在網頁中的內容,即是您要在後臺排好
版后才返回數據
2,利用現成js框架庫,這裡我用的是jquery
步驟如下
前臺在js方法里如下
- 。。
- var url = 'http://localhost:8080/testjson/testJsonServlet?callback=?';
- $.getJSON(url, function(jsonContent){
- alert(jsonContent.status);
- });
後臺
- response.setContentType("text/html");
- PrintWriter out = response.getWriter();
- String callback = request.getParameter("callback");
- //request.setAttribute("msg", callback+"({ status: '1', info:'填写正确!'})");
- out.print(callback+"({ status: '1', info:'填写正确!'})");
- System.out.println("in");
- out.flush();
- out.close();
注:1:這裡的前臺和後臺如果是跨域的話,是在不同的工程裡面的,但不跨域的話,也可在同一工程裡面,畢竟不跨域是
跨域的特殊化
2:特別要主要前臺的這裡
var url = 'http://localhost:8080/testjson/testJsonServlet?callback=?' ;
和後臺的這裡
String callback = request.getParameter("callback");
out.print(callback+"({ status: '1', info:'填写正确!'})");
輸出的json數據要加上callback參數,否則就跨域不了了,這里是關鍵哦。。
呵呵采用方法2的返回json數據的話不用手工編寫{ status: '1', info:'填写正确!'}
這種格式的,有個json的jar包的,轉為jsonobject就可以的拉,到網上去搜索一下吧,
就交流這么多先,不明的可以留言哦,還望各位大蝦多多指點哦
呵呵:我上傳了個例子在我的資源里了,有需要的去下載看看哦,