程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> 更多編程語言 >> 更多關於編程 >> Ajax跨域查詢完美解決通過$.getJSON()實現

Ajax跨域查詢完美解決通過$.getJSON()實現

編輯:更多關於編程

    原因:浏覽器安全上做了限制,禁止ajax跨域獲得數據。
    解決方法:通過jquery提供的$.getJSON()可以跨域獲得JSON格式的數據。優點:兼容性強。

    Java後台代碼:

    復制代碼 代碼如下:
    protected void doPost(HttpServletRequest req, HttpServletResponse resp)
    throws ServletException, IOException {
    String callback =req.getParameter("callback");//jquery生成的自定義函數名
    resp.setCharacterEncoding("UTF-8");
    resp.setContentType("text/html;charset=utf-8");
    PrintWriter out = resp.getWriter();
    //返回json格式字符串,注意向前台輸出的格式必須為 callback(json格式的字符串);
    //callback是jquery生成的自定義函數名,返回這種格式,前台jquery代碼會自動替換
    //回調函數為此callback函數,從而達到跨域的效果,網上還有其他的跨域方案如:AJAJ
    //原理應該也是和此方法一樣。缺點是:返回數據量不宜過大,安全性差,建議重要數據不
    //要通過這種形式傳遞。
    out.print(callback+"({name:'111',sex:'222'});");
    out.flush();
    out.close();
    }


    Js前台調用代碼:

    復制代碼 代碼如下:
    $(function(){
    //需要傳的參數,可以不傳。
    var data= {param1:"param1",param2:"param2"};
    //注意url一定要以callback=?的形式拼接,callback參數名可以自定義,
    //但後台必須也要同步獲取的參數名
    var url = 'http://192.168.1.216:8080/DSFA/getUser?callback=?';
    $.getJSON(url,data,function(backdata){
    //其實後台返回的函數已經替換為此函數,所以backdata
    //就是你從後台傳過來的json對象。
    alert(backdata);
    });
    })


    如果有不明白的地方,請留言....

    1. 上一頁:
    2. 下一頁:
    Copyright © 程式師世界 All Rights Reserved