跨域的N種形式:
1.直接用jquery中$.getJSON進(jìn)行跨域提交 優(yōu)點(diǎn):有返回值,可直接跨域;
缺點(diǎn):數(shù)據(jù)量小;
提交方式:僅get (無(wú)$.postJSON)
- $.getJSON("http://www.sendnet.cn/?callback=?" , { UserId: 1001 },
- nction (data) {
- alert(data.info);
- ;
- $.ajax({
- type: "Get",
- url: "http://www.sendnet.cn/?UserId=1001",
- cache: false,
- error: function () { },
- jsonp: "callback",
- dataType: "jsonp",
- success: function (result) {
- alert(result.info);
- }
- });
2.在頁(yè)面中嵌入一個(gè)iframe,把iframe的寬和高設(shè)置為0進(jìn)行跨域提交 優(yōu)點(diǎn):可直接跨域;
缺點(diǎn):無(wú)返回值(脫離ajax本質(zhì));
提交方式:get/post
- 使用隱藏的iframe來(lái)提交表單
- 1,在頁(yè)面中嵌入一個(gè)iframe,把iframe的寬和高設(shè)置為0
- 2.在iframe的里面里設(shè)置一個(gè)from的表單,表單的內(nèi)容就是真正要提交的表單內(nèi)容。
- 3.當(dāng)點(diǎn)擊按鈕的時(shí)候是iframe里的表單提交。
-
-
- <form id="form2" name="form2" method="post" action="a,jsp" enctype="multipart/form-data">
- <input name="option_13412" id="option_13412" type="text"/>
- <input name="option_13413" id="option_13413" type="text"/>
- <input name="option_13414" id="option_13414" type="text"/>
- <input name="option_13415" id="option_13415" type="text"/>
- </form>
-
- 使用jquery來(lái)啊操作iframe中的表單元素
- $(window.frames["iframe1"].document).find("#option_13412").val(name);
- $(window.frames["iframe1"].document).find("#option_13413").val(phone);
- $(window.frames["iframe1"].document).find("#option_13415").val(content);
-
- 通過(guò)按鈕來(lái)提交iframe里的表單
- $(window.frames["iframe1"].document).find("#form2").submit();
3.直接用$.post跨域,先提交到本地域名下一個(gè)代理程序,通過(guò)代理程序向目的域名進(jìn)行post或get提交,并根據(jù)目的域名的返回值通過(guò)代理 程序返回給本地頁(yè)面 優(yōu)點(diǎn):有返回值,可直接跨域,可通過(guò) 代理程序 統(tǒng)計(jì)ip等用戶(hù)信息,增加安全性;
提交方式:get/post
復(fù)雜度:需要前端工程師和后端工程師配合(php/java../工程師)
缺點(diǎn):需要消耗本地服務(wù)器資源,增加ajax等待時(shí)間(可忽略)
4.向百度學(xué)習(xí)的思路:由于調(diào)用任何js文件不涉及跨域問(wèn)題,所以js腳本中可以編寫(xiě)調(diào)用遠(yuǎn)程服務(wù)器上的js文件,該文件實(shí)現(xiàn)你需要的業(yè)務(wù)。
即a.js動(dòng)態(tài)調(diào)用www.baidu.com/b.js ,其中b.js實(shí)現(xiàn)業(yè)務(wù)
5.待研究…………
本站僅提供存儲(chǔ)服務(wù),所有內(nèi)容均由用戶(hù)發(fā)布,如發(fā)現(xiàn)有害或侵權(quán)內(nèi)容,請(qǐng)
點(diǎn)擊舉報(bào)。