佳木斯湛栽影视文化发展公司

主頁(yè) > 知識(shí)庫(kù) > PHP下ajax跨域的解決方案之window.name實(shí)例分析

PHP下ajax跨域的解決方案之window.name實(shí)例分析

熱門標(biāo)簽:Linux服務(wù)器 團(tuán)購(gòu)網(wǎng)站 電子圍欄 Mysql連接數(shù)設(shè)置 阿里云 服務(wù)器配置 科大訊飛語(yǔ)音識(shí)別系統(tǒng) 銀行業(yè)務(wù)

本文實(shí)例講述了PHP下ajax跨域的解決方案之window.name。分享給大家供大家參考,具體如下:

原理核心:window對(duì)象的name屬性是一個(gè)很特別的屬性,當(dāng)該window的location變化,然后重新加載,它的name屬性可以依然保持不變。

依此原理,我們可以在頁(yè)面A中用iframe加載其他域的頁(yè)面B,而頁(yè)面B中用JavaScript把需要傳遞的數(shù)據(jù)賦值給 window.name,頁(yè)面A的iframe加載完成之后,頁(yè)面A修改iframe的地址,將其變成同域的一個(gè)地址,然后就可以讀出window.name的值了。

例:有兩個(gè)網(wǎng)站www.a.com和www.b.com,我們要在www.a.com/a.html下獲取www.b.com/data.html數(shù)據(jù)。

我們需要三個(gè)文件:

www.a.com 下的 a.html 獲取數(shù)據(jù)并顯示
www.b.com 下的data.html 提供數(shù)據(jù)
www.a.com 下的proxy.html 代理文件,與a.html同一域下,一般為空html文件。

www.b.com下的data.html如下:

!DOCTYPE html>
html>
head>
  meta charset="UTF-8">
  title>Insert title here/title>
/head>
body>
  script type="text/javascript">
    //添加需要傳遞的數(shù)據(jù),大小一般為2M,IE和firefox下可以大至32M左右
    window.name = '[{"name":"test1"},{"name":"test2"}]';
  /script>
/body>
/html>

www.a.com下的proxy.html如下:

!DOCTYPE html>
html>
head>
  meta charset="UTF-8">
  title>Insert title here/title>
/head>
body>
  !-- 空的html文件 -->
/body>
/html>

www.a.com下的a.html如下:

!DOCTYPE html>
html>
head>
  meta charset="UTF-8">
  title>Insert title here/title>
/head>
body>
 
!-- 用于引用www.b.com/data.html文件 -->
iframe id="iframe" src="">/iframe>
 
!-- 顯示獲取到的數(shù)據(jù) -->
div id="data">/div>
 
script type="text/javascript" src="./jquery.js">/script>
script type="text/javascript">
var ifr = document.getElementById("iframe");
ifr.src = "http://www.b.com/data.html";
if (ifr.attachEvent) {
  ifr.attachEvent("onload", loadfunc);
} else {
  ifr.onload = loadfunc;
}
 
var state = 0;
function loadfunc() {
  if(state == 0) {
    state = 1;
    ifr.contentWindow.location = "http://www.a.com/proxy.html";
  } else {
    var data = ifr.contentWindow.name;
    $.each($.parseJSON(data), function(i, v) {
      $("#data").append(v.name);
    });
     
    //銷毀iframe,保證安全
    ifr.contentWindow.document.write("");
    ifr.contentWindow.close();
    document.body.removeChild(ifr);
  }
}
/script>
/body>
/html>

更多關(guān)于PHP相關(guān)內(nèi)容可查看本站專題:《PHP+ajax技巧與應(yīng)用小結(jié)》、《PHP網(wǎng)絡(luò)編程技巧總結(jié)》、《php字符串(string)用法總結(jié)》、《php+mysql數(shù)據(jù)庫(kù)操作入門教程》及《php常見(jiàn)數(shù)據(jù)庫(kù)操作技巧匯總》

希望本文所述對(duì)大家PHP程序設(shè)計(jì)有所幫助。

您可能感興趣的文章:
  • ThinkPHP 5 AJAX跨域請(qǐng)求頭設(shè)置實(shí)現(xiàn)過(guò)程解析
  • PHP Ajax跨域問(wèn)題解決方案代碼實(shí)例
  • 原生js實(shí)現(xiàn)ajax請(qǐng)求和JSONP跨域請(qǐng)求操作示例
  • PHP下ajax跨域的解決方案之jsonp實(shí)例分析
  • 使用ajax跨域調(diào)用springboot框架的api傳輸文件
  • express如何解決ajax跨域訪問(wèn)session失效問(wèn)題詳解
  • Ajax跨域問(wèn)題及解決方案(jsonp,cors)
  • Ajax解決跨域之設(shè)置CORS響應(yīng)頭實(shí)現(xiàn)跨域案例詳解

標(biāo)簽:萍鄉(xiāng) 廣元 大理 江蘇 蚌埠 衡水 棗莊 衢州

巨人網(wǎng)絡(luò)通訊聲明:本文標(biāo)題《PHP下ajax跨域的解決方案之window.name實(shí)例分析》,本文關(guān)鍵詞  ;如發(fā)現(xiàn)本文內(nèi)容存在版權(quán)問(wèn)題,煩請(qǐng)?zhí)峁┫嚓P(guān)信息告之我們,我們將及時(shí)溝通與處理。本站內(nèi)容系統(tǒng)采集于網(wǎng)絡(luò),涉及言論、版權(quán)與本站無(wú)關(guān)。
  • 相關(guān)文章
  • 收縮
    • 微信客服
    • 微信二維碼
    • 電話咨詢

    • 400-1100-266
    华容县| 招远市| 磐安县| 蒙自县| 刚察县| 湘乡市| 鸡西市| 沿河| 通许县| 漳平市| 调兵山市| 集安市| 昌宁县| 抚松县| 海南省| 静乐县| 邓州市| 福海县| 滨海县| 老河口市| 澳门| 兰坪| 广东省| 聂拉木县| 松桃| 镇雄县| 英超| 长治市| 双柏县| 边坝县| 揭东县| 虞城县| 海安县| 中西区| 轮台县| 信阳市| 保德县| 宿州市| 澄江县| 青田县| 巫山县|