最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

關(guān)于iframe跨域POST提交的方法示例

 更新時(shí)間:2017年01月15日 15:56:01   投稿:daisy  
這篇文章主要給大家介紹了關(guān)于iframe跨域POST提交的相關(guān)資料,文中給出了詳細(xì)的介紹與示例代碼,相信對(duì)大家的學(xué)習(xí)或者工作具有一定的參考借鑒價(jià)值,需要的朋友可以一起來(lái)學(xué)習(xí)學(xué)習(xí)。

前言

以前在面試的時(shí)候經(jīng)常遇到問(wèn)關(guān)于跨域的事兒,所以自己對(duì)跨域有一定的概念性了解,知道什么是跨域以及解決跨域的方法,但是具體實(shí)際從來(lái)沒(méi)有操作過(guò),直到最近在公司項(xiàng)目中,遇到了一個(gè)需要使iframe跨域進(jìn)行POST提交的實(shí)際案例,我才明白具體如何使用iframe進(jìn)行跨域操作。

說(shuō)到跨域,就不得不提起瀏覽器的同源策略。

同源策略限制從一個(gè)源加載的文檔或腳本如何與來(lái)自另一個(gè)源的資源進(jìn)行交互。

如果協(xié)議,端口(如果指定了一個(gè))和主機(jī)對(duì)于兩個(gè)頁(yè)面是相同的,那么這兩個(gè)頁(yè)面就具有相同的源。

從這個(gè)定義可以看出,如果兩個(gè)頁(yè)面的協(xié)議,端口,主機(jī)三個(gè)只要有一個(gè)不一樣,就是不同的源,想要相互之間進(jìn)行交互,就需要進(jìn)行跨域。

iframe跨域POST無(wú)刷新提交

跨域的方法有很多,像JSONP、iframe、CORS、postMessage等等,由于項(xiàng)目中用到了iframe進(jìn)行POST跨域,所以本文主要總結(jié)一下如何利用iframe進(jìn)行POST無(wú)刷新提交。

我們知道一般提交使用form表單進(jìn)行提交,但是這種提交會(huì)導(dǎo)致頁(yè)面跳轉(zhuǎn),所以交互效果不是友好,為了實(shí)現(xiàn)無(wú)刷新提交,我們會(huì)使用Ajax,但是此時(shí)可能會(huì)出現(xiàn)一個(gè)問(wèn)題—-跨域,那么如何解決這個(gè)問(wèn)題呢,可以使用一個(gè)隱藏的iframe,我們將要提交的數(shù)據(jù)提交到這個(gè)隱藏的iframe,然后讓這個(gè)iframe去跳轉(zhuǎn),這樣就可以在視覺(jué)上實(shí)現(xiàn)頁(yè)面無(wú)跳轉(zhuǎn)刷新(實(shí)際上頁(yè)面還是跳轉(zhuǎn)了,只是iframe被隱藏,我們看不到)。

在提交后我們還要獲取到后臺(tái)給我們返回回來(lái)的數(shù)據(jù),所以需要在iframe中進(jìn)行數(shù)據(jù)的交互同時(shí)拿到返回回來(lái)的data。

為了讓數(shù)據(jù)可以順利的進(jìn)行數(shù)據(jù)交互,我們通常使用document.domain將域設(shè)置到頂級(jí)域。
為了拿到返回回來(lái)的data,需要使用一個(gè)函數(shù),函數(shù)名后臺(tái)已經(jīng)告知。

附實(shí)現(xiàn)代碼

<form action="You POST Link" method="post" target="target" id="J_commenting">
 <select name="category" class="select J_filter" id="J_typeFilter">
 <option value="0" selected="selected">Select Category</option>
 <option value="1">Life</option>
 <option value="2">People</option>
 <option value="3">Landscape</option>
 <option value="4">Tech</option>
 <option value="5">Others</option>
 </select>
 <input name="title" type="text" class="misstion-title J_misstion-title">
 <textarea name="desc" class="misstion-description J_description" maxlength="200"></textarea>
 <button class="button J_button" type="submit">Submit</button>
</form>
<iframe name="target" style="display:none;"></iframe>
var $button = $('.J_button');
var $commenting = $('#J_commenting');
var $filter = $('.J_filter');
var $misstionTitle = $('.J_misstion-title');
var $description = $('.J_description');
$button.on('click', function () {
 var filterValue = $filter.val();
 var misstionTitleValue = $misstionTitle.val();
 var descriptionValue = $description.val();
 if (filterValue === '0' || misstionTitleValue === '' || descriptionValue === '') {
 alert('Check if you filled out all the fields required');
 } else {
 $commenting.submit();
 }
});
$commenting.on('submit', function () {
 document.domain = 'aa.com';
 window.addData = function (data) {
 var dataCode = data.code;
 var dataMsg = data.message;
 if (dataCode === 0) {
  alert('submit success!');
 } else {
  alert('submit failed!');
 }
 }
});

點(diǎn)擊提交后,后臺(tái)返回的數(shù)據(jù):

document.domain = "aa.com";
var data = {"code":-2,"info":"please login first","message":"please login first"}; 
if( typeof(parent.window['addData']) == "function"){
 parent.window['addData'](data);
}else if( typeof(window.top['addData']) == "function"){
 window.top['addData'](data);
}

總結(jié)

以上就是這篇文章的全部?jī)?nèi)容,希望本文的內(nèi)容對(duì)大家的學(xué)習(xí)或者工作能帶來(lái)一定的幫助,如果有疑問(wèn)大家可以留言交流。

相關(guān)文章

  • ES6中Proxy代理用法實(shí)例淺析

    ES6中Proxy代理用法實(shí)例淺析

    這篇文章主要介紹了ES6中Proxy代理用法,結(jié)合實(shí)例形式簡(jiǎn)單分析了Proxy代理的概念、功能、使用方法與相關(guān)注意事項(xiàng),需要的朋友可以參考下
    2017-04-04
  • 前端雙token無(wú)感刷新圖文詳解

    前端雙token無(wú)感刷新圖文詳解

    實(shí)現(xiàn)token無(wú)感刷新對(duì)于前端來(lái)說(shuō)是一項(xiàng)十分常用的技術(shù),這篇文章主要給大家介紹了關(guān)于前端雙token無(wú)感刷新的相關(guān)資料,文中通過(guò)代碼介紹的非常詳細(xì),需要的朋友可以參考下
    2024-09-09
  • 微信小程序登錄方法之授權(quán)登陸及獲取微信用戶手機(jī)號(hào)

    微信小程序登錄方法之授權(quán)登陸及獲取微信用戶手機(jī)號(hào)

    最近改了一個(gè)公司項(xiàng)目,新增加了一個(gè)獲取用戶手機(jī)號(hào)功能,里面用到了關(guān)于獲取用戶信息和用戶手機(jī)號(hào)的功能,下面這篇文章主要給大家介紹了關(guān)于微信小程序登錄方法之授權(quán)登陸及獲取微信用戶手機(jī)號(hào)的相關(guān)資料,需要的朋友可以參考下
    2022-07-07
  • 微信小程序滾動(dòng)、輪播圖和文本實(shí)例詳解

    微信小程序滾動(dòng)、輪播圖和文本實(shí)例詳解

    輪播圖是我們?nèi)粘i_(kāi)發(fā)中經(jīng)常會(huì)遇到的一個(gè)需求,下面這篇文章主要給大家介紹了關(guān)于微信小程序滾動(dòng)、輪播圖和文本的相關(guān)資料,文中通過(guò)實(shí)例代碼介紹的非常詳細(xì),需要的朋友可以參考下
    2022-08-08
  • 點(diǎn)擊彈出層效果&彈出窗口后網(wǎng)頁(yè)背景變暗效果的實(shí)現(xiàn)代碼

    點(diǎn)擊彈出層效果&彈出窗口后網(wǎng)頁(yè)背景變暗效果的實(shí)現(xiàn)代碼

    本篇文章主要是對(duì)點(diǎn)擊彈出層效果&彈出窗口后網(wǎng)頁(yè)背景變暗效果的實(shí)現(xiàn)代碼進(jìn)行了介紹,需要的朋友可以過(guò)來(lái)參考下,希望對(duì)大家有所幫助
    2014-02-02
  • webpack5搭建一個(gè)簡(jiǎn)易的react腳手架項(xiàng)目實(shí)踐

    webpack5搭建一個(gè)簡(jiǎn)易的react腳手架項(xiàng)目實(shí)踐

    本文文章主要介紹了webpack5搭建一個(gè)簡(jiǎn)易的react腳手架項(xiàng)目實(shí)踐,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2022-05-05
  • JavaScript獲取網(wǎng)頁(yè)支持表單字符集的方法

    JavaScript獲取網(wǎng)頁(yè)支持表單字符集的方法

    這篇文章主要介紹了JavaScript獲取網(wǎng)頁(yè)支持表單字符集的方法,涉及javascript中acceptCharset方法的使用技巧,具有一定參考借鑒價(jià)值,需要的朋友可以參考下
    2015-04-04
  • 原生js實(shí)現(xiàn)autocomplete插件

    原生js實(shí)現(xiàn)autocomplete插件

    這篇文章主要介紹了原生js實(shí)現(xiàn)autocomplete插件的相關(guān)資料,需要的朋友可以參考下
    2016-04-04
  • javascript限制文本框輸入值類(lèi)型的方法

    javascript限制文本框輸入值類(lèi)型的方法

    這篇文章主要介紹了javascript限制文本框輸入值類(lèi)型的方法,涉及javascript鼠標(biāo)事件、鍵盤(pán)按鍵及字符串的相關(guān)操作技巧,非常具有實(shí)用價(jià)值,需要的朋友可以參考下
    2015-05-05
  • 詳解JavaScript模板化使文章更清晰的全過(guò)程

    詳解JavaScript模板化使文章更清晰的全過(guò)程

    模塊化就是把一大段代碼拆分成一個(gè)個(gè)小文件(模塊),每個(gè)模塊獨(dú)立工作,互相協(xié)作,那么JavaScript模板化是如何使文章更清晰呢,本文給大家詳細(xì)介紹了JavaScript模板化使文章更清晰的全過(guò)程,需要的朋友可以參考下
    2025-04-04

最新評(píng)論

新乡县| 清徐县| 罗甸县| 葵青区| 永春县| 黑河市| 平湖市| 太仓市| 彰化县| 漳浦县| 克拉玛依市| 徐汇区| 德令哈市| 英吉沙县| 九江市| 三江| 德江县| 班戈县| 剑河县| 连州市| 苍南县| 商河县| 高青县| 永定县| 隆德县| 新安县| 福海县| 无棣县| 通海县| 焉耆| 晋城| 大名县| 漳州市| 顺义区| 玉溪市| 肥西县| 积石山| 淅川县| 齐河县| 金湖县| 宜昌市|