欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

關于iframe跨域POST提交的方法示例

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

前言

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

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

同源策略限制從一個源加載的文檔或腳本如何與來自另一個源的資源進行交互。

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

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

iframe跨域POST無刷新提交

跨域的方法有很多,像JSONP、iframe、CORS、postMessage等等,由于項目中用到了iframe進行POST跨域,所以本文主要總結一下如何利用iframe進行POST無刷新提交。

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

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

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

附實現(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!');
 }
 }
});

點擊提交后,后臺返回的數(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);
}

總結

以上就是這篇文章的全部內容,希望本文的內容對大家的學習或者工作能帶來一定的幫助,如果有疑問大家可以留言交流。

相關文章

  • 對于JavaScript繼承你到底了解多少

    對于JavaScript繼承你到底了解多少

    js的繼承機制不同于傳統(tǒng)的面向對象語言,采用原型鏈實現(xiàn)繼承,基本思想是利用原型讓一個引用類型繼承另一個引用類型的屬性和方法,下面這篇文章主要給大家介紹了關于JS繼承的相關資料,需要的朋友可以參考下
    2021-09-09
  • console.log的輸出語句如何使用

    console.log的輸出語句如何使用

    這篇文章主要介紹了關于console.log的輸出語句如何使用問題,具有很好的參考價值,希望對大家有所幫助,如有錯誤或未考慮完全的地方,望不吝賜教
    2024-02-02
  • uniapp中使用vuex并持久化的方法示例

    uniapp中使用vuex并持久化的方法示例

    vuex是基于vuex.js的狀態(tài)管理工具,可以把它理解為一個倉庫,下面這篇文章主要給大家介紹了關于uniapp中如何使用vuex并持久化的相關資料,文中通過實例代碼介紹的非常詳細,需要的朋友可以參考下
    2023-06-06
  • JS實現(xiàn)簡單路由器功能的方法

    JS實現(xiàn)簡單路由器功能的方法

    這篇文章主要介紹了JS實現(xiàn)簡單路由器功能的方法,基于javascript模擬簡單路由編碼的相關技巧,需要的朋友可以參考下
    2015-05-05
  • 詳解JavaScript的函數(shù)簡介

    詳解JavaScript的函數(shù)簡介

    這篇文章主要為大家介紹了JavaScript的函數(shù)簡介,具有一定的參考價值,感興趣的小伙伴們可以參考一下,希望能夠給你帶來幫助
    2021-11-11
  • js 驗證身份證信息有效性

    js 驗證身份證信息有效性

    根據(jù)身份證號碼編碼規(guī)則對其進行有效性驗證,具體實現(xiàn)如下,大家可以參考下
    2014-03-03
  • javascript 表單驗證常見正則

    javascript 表單驗證常見正則

    表單驗證正則的代碼,大家可以參考下,可以直接拿來使用,也可以用來學習正則。
    2009-09-09
  • javascript針對不確定函數(shù)的執(zhí)行方法

    javascript針對不確定函數(shù)的執(zhí)行方法

    這篇文章主要介紹了javascript針對不確定函數(shù)的執(zhí)行方法,實例分析了eval函數(shù)及符號屬性兩種執(zhí)行方式,需要的朋友可以參考下
    2015-12-12
  • 純JavaScript代碼實現(xiàn)移動設備繪圖解鎖

    純JavaScript代碼實現(xiàn)移動設備繪圖解鎖

    為了個人信息的安全起見,移動設備上都有個繪圖解鎖,使用起來非常簡單,代碼是怎么實現(xiàn)的呢?下面小編給大家介紹js實現(xiàn)移動設備繪圖解鎖,需要的朋友可以參考下
    2015-10-10
  • JS實現(xiàn)圖片無間斷滾動代碼匯總

    JS實現(xiàn)圖片無間斷滾動代碼匯總

    這篇文章主要介紹了JS實現(xiàn)圖片無間斷滾動代碼匯總,非常實用的特效代碼,需要的朋友可以參考下
    2014-07-07

最新評論