zoukankan      html  css  js  c++  java
  • 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就可以的拉,到網上去搜索一下吧,

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

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

  • 相关阅读:
    HDU 2844 Coins(多重背包)
    HDU 4540 威威猫系列故事——打地鼠(DP)
    Codeforces Round #236 (Div. 2)
    FZU 2140 Forever 0.5
    HDU 1171 Big Event in HDU(DP)
    HDU 1160 FatMouse's Speed(DP)
    ZOJ 3490 String Successor
    ZOJ 3609 Modular Inverse
    ZOJ 3603 Draw Something Cheat
    ZOJ 3705 Applications
  • 原文地址:https://www.cnblogs.com/sode/p/2864986.html
Copyright © 2011-2022 走看看