Ajax跨域查詢完美解決通過$.getJSON()實現(xiàn)
更新時間:2013年06月28日 17:54:22 作者:
瀏覽器安全上做了限制,禁止ajax跨域獲得數(shù)據(jù),可以通過jquery提供的$.getJSON()可以跨域獲得JSON格式的數(shù)據(jù),具體的實現(xiàn)如下,感興趣的朋友可以參考下哈,希望對大家有所幫助
原因:瀏覽器安全上做了限制,禁止ajax跨域獲得數(shù)據(jù)。
解決方法:通過jquery提供的$.getJSON()可以跨域獲得JSON格式的數(shù)據(jù)。優(yōu)點:兼容性強。
Java后臺代碼:
protected void doPost(HttpServletRequest req, HttpServletResponse resp)
throws ServletException, IOException {
String callback =req.getParameter("callback");//jquery生成的自定義函數(shù)名
resp.setCharacterEncoding("UTF-8");
resp.setContentType("text/html;charset=utf-8");
PrintWriter out = resp.getWriter();
//返回json格式字符串,注意向前臺輸出的格式必須為 callback(json格式的字符串);
//callback是jquery生成的自定義函數(shù)名,返回這種格式,前臺jquery代碼會自動替換
//回調(diào)函數(shù)為此callback函數(shù),從而達到跨域的效果,網(wǎng)上還有其他的跨域方案如:AJAJ
//原理應(yīng)該也是和此方法一樣。缺點是:返回數(shù)據(jù)量不宜過大,安全性差,建議重要數(shù)據(jù)不
//要通過這種形式傳遞。
out.print(callback+"({name:'111',sex:'222'});");
out.flush();
out.close();
}
Js前臺調(diào)用代碼:
$(function(){
//需要傳的參數(shù),可以不傳。
var data= {param1:"param1",param2:"param2"};
//注意url一定要以callback=?的形式拼接,callback參數(shù)名可以自定義,
//但后臺必須也要同步獲取的參數(shù)名
var url = 'http://192.168.1.216:8080/DSFA/getUser?callback=?';
$.getJSON(url,data,function(backdata){
//其實后臺返回的函數(shù)已經(jīng)替換為此函數(shù),所以backdata
//就是你從后臺傳過來的json對象。
alert(backdata);
});
})
如果有不明白的地方,請留言....
解決方法:通過jquery提供的$.getJSON()可以跨域獲得JSON格式的數(shù)據(jù)。優(yōu)點:兼容性強。
Java后臺代碼:
復(fù)制代碼 代碼如下:
protected void doPost(HttpServletRequest req, HttpServletResponse resp)
throws ServletException, IOException {
String callback =req.getParameter("callback");//jquery生成的自定義函數(shù)名
resp.setCharacterEncoding("UTF-8");
resp.setContentType("text/html;charset=utf-8");
PrintWriter out = resp.getWriter();
//返回json格式字符串,注意向前臺輸出的格式必須為 callback(json格式的字符串);
//callback是jquery生成的自定義函數(shù)名,返回這種格式,前臺jquery代碼會自動替換
//回調(diào)函數(shù)為此callback函數(shù),從而達到跨域的效果,網(wǎng)上還有其他的跨域方案如:AJAJ
//原理應(yīng)該也是和此方法一樣。缺點是:返回數(shù)據(jù)量不宜過大,安全性差,建議重要數(shù)據(jù)不
//要通過這種形式傳遞。
out.print(callback+"({name:'111',sex:'222'});");
out.flush();
out.close();
}
Js前臺調(diào)用代碼:
復(fù)制代碼 代碼如下:
$(function(){
//需要傳的參數(shù),可以不傳。
var data= {param1:"param1",param2:"param2"};
//注意url一定要以callback=?的形式拼接,callback參數(shù)名可以自定義,
//但后臺必須也要同步獲取的參數(shù)名
var url = 'http://192.168.1.216:8080/DSFA/getUser?callback=?';
$.getJSON(url,data,function(backdata){
//其實后臺返回的函數(shù)已經(jīng)替換為此函數(shù),所以backdata
//就是你從后臺傳過來的json對象。
alert(backdata);
});
})
如果有不明白的地方,請留言....
您可能感興趣的文章:
- jquery的ajax和getJson跨域獲取json數(shù)據(jù)的實現(xiàn)方法
- 跨域請求之jQuery的ajax jsonp的使用解惑
- AJAX跨域請求json數(shù)據(jù)的實現(xiàn)方法
- jquery ajax跨域解決方法(json方式)
- jquery ajax jsonp跨域調(diào)用實例代碼
- AJAX javascript的跨域訪問執(zhí)行
- js跨域和ajax 跨域問題的實現(xiàn)思路
- AJAX實現(xiàn)跨域的三種方法(代理,JSONP,XHR2)
- ajax跨域請求js拒絕訪問的解決方法
- 原生JS實現(xiàn)Ajax跨域請求flask響應(yīng)內(nèi)容
相關(guān)文章
使用ajax技術(shù)無刷新動態(tài)調(diào)用新浪股票實時數(shù)據(jù)
由于最近網(wǎng)速慢的緣故,查看股票信息時網(wǎng)頁老是打不開。這幾天一直在研究ajax,于是用jquery自己做了一個自動讀取新浪股票實時數(shù)據(jù)的頁面2014-08-08使用Ajax進行文件與其他參數(shù)的上傳功能(java開發(fā))
這篇文章主要介紹了使用Ajax進行文件與其他參數(shù)的上傳功能(java開發(fā)),非常不錯,具有參考借鑒價值,需要的朋友參考下吧2017-01-01jquery ajax提交表單從action傳值到j(luò)sp實現(xiàn)小結(jié)
pw.print(random);這里的random就是action要向jsp傳的值,在jsp中,success: function(text)這里的text就是接收從action傳過來的值,感興趣的朋友可以參考下哈2013-04-04Ajax與mysql數(shù)據(jù)交互實現(xiàn)留言板功能
最近自己做了一個小demo,實現(xiàn)了Ajax與MySQL的數(shù)據(jù)交互,js部分用的是jq,后臺用的是PHP,數(shù)據(jù)庫是mysql,下面通過本文給大家詳細介紹下2016-12-12Ajax實現(xiàn)動態(tài)加載數(shù)據(jù)
這篇文章主要為大家詳細介紹了Ajax動態(tài)加載數(shù)據(jù)的小例子,具有一定的參考價值,感興趣的小伙伴們可以參考一下2017-05-05ajax jquery校驗用戶是否已經(jīng)注冊演示代碼
用戶是否已經(jīng)注冊的判斷方法有很多,在本文將為大家詳細介紹下如何使用ajax jquery來實現(xiàn),感興趣的朋友可以參考下2013-10-10