jsp + jquery 實現跨域訪問 --返回json

引用:http://blog.csdn.net/lshaohe/article/details/4954760

近日由於開發需要,要用到跨域訪問數據,查了一下資料,發現主要有兩種方法:

 

1,直接用js訪問格式如

 

[javascript] view plaincopy
  1. <mce:script src="<%=page_url%><!--  
  2. ?method=jsonInfo&moduleid=359&pageid=1&pagesize=7&count=25&colsize=2">  
  3. // --></mce:script>  

 

後臺用

 

  1. HTML2TEXT.JAVA  
  2. public static String string2Json(String s) {   
  3.           
  4.         StringBuilder sb = new StringBuilder(s.length()+20);   
  5.         sb.append('/"');   
  6.         for (int i=0; i<s.length(); i++) {   
  7.             char c = s.charAt(i);   
  8.             switch (c) {   
  9.             case '/"':   
  10.                 sb.append("///"");   
  11.                 break;   
  12.             case '//':   
  13.                 sb.append("////");   
  14.                 break;   
  15.             case '/':   
  16.                 sb.append("///");   
  17.                 break;   
  18.             case '/b':   
  19.                 sb.append("//b");   
  20.                 break;   
  21.             case '/f':   
  22.                 sb.append("//f");   
  23.                 break;   
  24.             case '/n':   
  25.                 sb.append("//n");   
  26.                 break;   
  27.             case '/r':   
  28.                 sb.append("//r");   
  29.                 break;   
  30.             case '/t':   
  31.                 sb.append("//t");   
  32.                 break;   
  33.             default:   
  34.                 sb.append(c);   
  35.             }   
  36.              
  37.         }   
  38.         sb.append('/"');   
  39.         //System.out.println(sb.toString());  
  40.         return sb.toString();   
  41.      }  

 

out.print("document.write("+Html2Text.string2Json (str.toString())+")");

 

注:script 訪問的連接後臺(action 或servlet 或jsp等。。)返回的數據是您要先顯示在網頁中的內容,即是您要在後臺排好

版后才返回數據

 

 

2,利用現成js框架庫,這裡我用的是jquery

步驟如下

前臺在js方法里如下

 

 

[javascript] view plaincopy
  1. 。。  
  2. var url = 'http://localhost:8080/testjson/testJsonServlet?callback=?';  
  3. $.getJSON(url,  function(jsonContent){  
  4.        
  5.    alert(jsonContent.status);  
  6. });   

 

 

後臺

 

      

  1. response.setContentType("text/html");  
  2.         PrintWriter out = response.getWriter();  
  3.         String callback = request.getParameter("callback");  
  4.         //request.setAttribute("msg", callback+"({ status: '1', info:'填写正确!'})");  
  5.         out.print(callback+"({ status: '1', info:'填写正确!'})");  
  6.         System.out.println("in");  
  7.         out.flush();  
  8.         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就可以的拉,到網上去搜索一下吧,

 

就交流這么多先,不明的可以留言哦,還望各位大蝦多多指點哦

 

呵呵:我上傳了個例子在我的資源里了,有需要的去下載看看哦,

posted @ 2013-01-17 18:04  镇水古月  阅读(236)  评论(0编辑  收藏  举报