Ajax跨域查詢完美解決通過(guò)$.getJSON()實(shí)現(xiàn)
更新時(shí)間:2013年06月28日 17:54:22 作者:
瀏覽器安全上做了限制,禁止ajax跨域獲得數(shù)據(jù),可以通過(guò)jquery提供的$.getJSON()可以跨域獲得JSON格式的數(shù)據(jù),具體的實(shí)現(xiàn)如下,感興趣的朋友可以參考下哈,希望對(duì)大家有所幫助
原因:瀏覽器安全上做了限制,禁止ajax跨域獲得數(shù)據(jù)。
解決方法:通過(guò)jquery提供的$.getJSON()可以跨域獲得JSON格式的數(shù)據(jù)。優(yōu)點(diǎn):兼容性強(qiáng)。
Java后臺(tái)代碼:
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格式字符串,注意向前臺(tái)輸出的格式必須為 callback(json格式的字符串);
//callback是jquery生成的自定義函數(shù)名,返回這種格式,前臺(tái)jquery代碼會(huì)自動(dòng)替換
//回調(diào)函數(shù)為此callback函數(shù),從而達(dá)到跨域的效果,網(wǎng)上還有其他的跨域方案如:AJAJ
//原理應(yīng)該也是和此方法一樣。缺點(diǎn)是:返回?cái)?shù)據(jù)量不宜過(guò)大,安全性差,建議重要數(shù)據(jù)不
//要通過(guò)這種形式傳遞。
out.print(callback+"({name:'111',sex:'222'});");
out.flush();
out.close();
}
Js前臺(tái)調(diào)用代碼:
$(function(){
//需要傳的參數(shù),可以不傳。
var data= {param1:"param1",param2:"param2"};
//注意url一定要以callback=?的形式拼接,callback參數(shù)名可以自定義,
//但后臺(tái)必須也要同步獲取的參數(shù)名
var url = 'http://192.168.1.216:8080/DSFA/getUser?callback=?';
$.getJSON(url,data,function(backdata){
//其實(shí)后臺(tái)返回的函數(shù)已經(jīng)替換為此函數(shù),所以backdata
//就是你從后臺(tái)傳過(guò)來(lái)的json對(duì)象。
alert(backdata);
});
})
如果有不明白的地方,請(qǐng)留言....
解決方法:通過(guò)jquery提供的$.getJSON()可以跨域獲得JSON格式的數(shù)據(jù)。優(yōu)點(diǎn):兼容性強(qiáng)。
Java后臺(tái)代碼:
復(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格式字符串,注意向前臺(tái)輸出的格式必須為 callback(json格式的字符串);
//callback是jquery生成的自定義函數(shù)名,返回這種格式,前臺(tái)jquery代碼會(huì)自動(dòng)替換
//回調(diào)函數(shù)為此callback函數(shù),從而達(dá)到跨域的效果,網(wǎng)上還有其他的跨域方案如:AJAJ
//原理應(yīng)該也是和此方法一樣。缺點(diǎn)是:返回?cái)?shù)據(jù)量不宜過(guò)大,安全性差,建議重要數(shù)據(jù)不
//要通過(guò)這種形式傳遞。
out.print(callback+"({name:'111',sex:'222'});");
out.flush();
out.close();
}
Js前臺(tái)調(diào)用代碼:
復(fù)制代碼 代碼如下:
$(function(){
//需要傳的參數(shù),可以不傳。
var data= {param1:"param1",param2:"param2"};
//注意url一定要以callback=?的形式拼接,callback參數(shù)名可以自定義,
//但后臺(tái)必須也要同步獲取的參數(shù)名
var url = 'http://192.168.1.216:8080/DSFA/getUser?callback=?';
$.getJSON(url,data,function(backdata){
//其實(shí)后臺(tái)返回的函數(shù)已經(jīng)替換為此函數(shù),所以backdata
//就是你從后臺(tái)傳過(guò)來(lái)的json對(duì)象。
alert(backdata);
});
})
如果有不明白的地方,請(qǐng)留言....
您可能感興趣的文章:
- jquery的ajax和getJson跨域獲取json數(shù)據(jù)的實(shí)現(xiàn)方法
- 跨域請(qǐng)求之jQuery的ajax jsonp的使用解惑
- AJAX跨域請(qǐng)求json數(shù)據(jù)的實(shí)現(xiàn)方法
- jquery ajax跨域解決方法(json方式)
- jquery ajax jsonp跨域調(diào)用實(shí)例代碼
- AJAX javascript的跨域訪問(wèn)執(zhí)行
- js跨域和ajax 跨域問(wèn)題的實(shí)現(xiàn)思路
- AJAX實(shí)現(xiàn)跨域的三種方法(代理,JSONP,XHR2)
- ajax跨域請(qǐng)求js拒絕訪問(wèn)的解決方法
- 原生JS實(shí)現(xiàn)Ajax跨域請(qǐng)求flask響應(yīng)內(nèi)容
相關(guān)文章
ajax提交手機(jī)號(hào)去數(shù)據(jù)庫(kù)驗(yàn)證并返回狀態(tài)值
這篇文章主要為大家詳細(xì)介紹了ajax提交手機(jī)號(hào)去數(shù)據(jù)庫(kù)驗(yàn)證并返回狀態(tài)值的相關(guān)資料,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2017-01-01
基于Ajax技術(shù)實(shí)現(xiàn)無(wú)刷新用戶登錄功能
這篇文章主要介紹了基于Ajax技術(shù)實(shí)現(xiàn)無(wú)刷新用戶登錄功能,非常不錯(cuò),具有參考借鑒價(jià)值,需要的的朋友參考下吧2017-01-01
Ajax異步請(qǐng)求技術(shù)實(shí)例講解
ajax是一種在無(wú)需重新加載整個(gè)網(wǎng)頁(yè)的情況下,能夠更新部分網(wǎng)頁(yè)的技術(shù)。下面通過(guò)本文給大家分享Ajax異步請(qǐng)求技術(shù)實(shí)例講解,非常不錯(cuò),具有參考借鑒價(jià)值,需要的的朋友參考下吧2017-08-08
零基礎(chǔ)學(xué)習(xí)AJAX之AJAX框架
本文是零基礎(chǔ)學(xué)習(xí)AJAX系列教程的第二篇,我們介紹點(diǎn)不一樣的知識(shí),學(xué)習(xí)下ajaxLib和ajaxGold兩款框架,方便我們更好的理解ajax.2015-01-01
Ajax實(shí)現(xiàn)文件上傳功能(Spring MVC)
這篇文章主要為大家詳細(xì)介紹了Ajax實(shí)現(xiàn)文件上傳功能,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2020-02-02
Ajax 無(wú)刷新在注冊(cè)用戶名時(shí)判斷是否為空是否被使用
這篇文章主要介紹了Ajax 無(wú)刷新在注冊(cè)用戶名時(shí)判斷是否為空是否被使用,需要的朋友可以參考下2014-05-05

