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就可以的拉,到網上去搜索一下吧,

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

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

  • 相关阅读:
    redis数据同步之redis-shake
    spring拦截机制中Filter(过滤器)、interceptor(拦截器)和Aspect(切面)的使用及区别
    MySQL之MVCC与幻读
    Notepad
    mac环境,python+selenium环境搭建,解决chromedriver报错问题
    大规模抓取的抓取效率和抓取技巧问题
    安卓逆向8,解决app抓包抓不到的问题
    [loj6033]棋盘游戏
    [ccBB]Billboards
    [loj6051]PATH
  • 原文地址:https://www.cnblogs.com/sode/p/2864986.html
Copyright © 2011-2022 走看看