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

來源:互聯網
上載者:User

原因:瀏覽器安全上做了限制,禁止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);
});
})

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

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.