PHP ajax跨子域的解决方案之document.domain+iframe实例分析

 更新时间:2020年03月05日 11:37:34   作者:怀素真  
这篇文章主要介绍了PHP ajax跨子域的解决方案之document.domain+iframe,结合实例形式分析了PHP ajax跨子域的解决方案document.domain+iframe的基本原理、实现方法与操作注意事项,需要的朋友可以参考下

本文实例讲述了PHP ajax跨子域的解决方案之document.domain+iframe。分享给大家供大家参考,具体如下:

对于主域相同,子域不同,我们可以设置相同的document.domain来欺骗浏览器,达到跨子域的效果。

例如:我们有两个域名:www.a.com 和 img.a.com

在www.a.com下有a.html

在img.a.com下有img.json和img.html这两个文件。

img.json就是一些我们要获取的数据:

[
  {
    "name" : "img1",
    "url" : "http://img.a.com/img1.jpg"
  },
  {
    "name" : "img2",
    "url" : "http://img.a.com/img2.jpg"
  }
]

img.html就是我们iframe要引用的:

<!DOCTYPE html>
<html>
<head>
  <meta charset="UTF-8">
  <title>Insert title here</title>
</head>
<body>
<script src="./jquery.js"></script>
<script type="text/javascript">
  document.domain = "a.com";

  var p = parent.window.$;
  p("#sub").text("我是子页面添加的");
</script>
</body>
</html>

a.html就是要通过跨子域获取数据的页面:

<!DOCTYPE html>
<html>
<head>
  <meta charset="UTF-8">
  <title>Insert title here</title>
</head>
<body>
<!-- 通过跨域获取数据,并添加到ul中 -->
<ul id="data"></ul>

<!-- 子页面通过parent.window来访问父页面 -->
<div id="sub"></div>

<!-- 通过iframe引用img.a.com下的img.html -->
<iframe id="iframe" src="http://img.a.com/img.html"></iframe>

<script src="./jquery.js"></script>
<script type="text/javascript">
document.domain = "a.com";

$("#iframe").bind("load", function() {
  //获取子页面的jquery对象
  iframe = document.getElementById("iframe").contentWindow.$;

  iframe.getJSON("http://img.a.com/img.json", function(data) {
    var con = "";
    //注意这里的$对象是www.a.com上的
    $.each(data, function(i, v) {
      con += "<li>" + v.name + ":" + v.url + "</li>";
    });
    $("#data").html(con);
  });
});
</script>
</body>
</html>

a.html中我们通过contentWindow.$来获取子页面的jquery对象,然后通过getJSON获取数据,并通过www.a.com上的$对象把数据写入到ul中。

在子页面img.html中我们通过parent.window来访问父页面的$对象,并操作元素添加数据。

更多关于PHP相关内容可查看本站专题:《PHP+ajax技巧与应用小结》、《PHP网络编程技巧总结》、《php字符串(string)用法总结》、《php+mysql数据库操作入门教程》及《php常见数据库操作技巧汇总

希望本文所述对大家PHP程序设计有所帮助。

相关文章

  • jQuery+PHP+ajax实现微博加载更多内容列表功能

    jQuery+PHP+ajax实现微博加载更多内容列表功能

    这篇文章主要介绍了jQuery+PHP+ajax实现微博加载更多内容列表功能,对于微博开发来说非常实用,需要的朋友可以参考下
    2014-06-06
  • PHP Memcached应用实现代码

    PHP Memcached应用实现代码

    在很多场合,我们都会听到 memcached 这个名字,但很多同学只是听过,并没有用过或实际了解过,只知道它是一个很不错的东东。这里简单介绍一下,memcached 是高效、快速的分布式内存对象缓存系统,主要用于加速 WEB 动态应用程序。
    2010-02-02
  • PHP单元测试利器 PHPUNIT初探

    PHP单元测试利器 PHPUNIT初探

    你是否在程序开发的过程中遇到以下的情况:当你花了很长的时间开发一个应用后,你认为应该是大功告成了,可惜在调试的时候,老是不断的发现bug,而且最可怕的是,这些bug是重复出现的,你可能发现这些bug之间会有关联,但却老是找不到问题的所在。
    2011-03-03
  • 解析php中array_merge与array+array的区别

    解析php中array_merge与array+array的区别

    本篇文章是对php中array_merge与array+array的区别进行了详细的分析介绍,需要的朋友参考下
    2013-06-06
  • golang 调用 php7详解及实例

    golang 调用 php7详解及实例

    这篇文章主要介绍了golang 调用 php7详解及实例的相关资料,需要的朋友可以参考下
    2017-01-01
  • php实现按指定大小等比缩放生成上传图片缩略图的方法

    php实现按指定大小等比缩放生成上传图片缩略图的方法

    这篇文章主要介绍了php实现按指定大小等比缩放生成上传图片缩略图的方法,可实现针对图片的等比缩放生成缩略图的功能,是非常实用的技巧,需要的朋友可以参考下
    2014-12-12
  • PHP设计模式之原型模式示例详解

    PHP设计模式之原型模式示例详解

    这篇文章主要给大家介绍了关于PHP设计模式之原型模式的相关资料,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2021-01-01
  • PHPMailer的主要功能特点和简单使用说明

    PHPMailer的主要功能特点和简单使用说明

    本篇文章主要是对PHPMailer的主要功能特点和简单使用说明进行了介绍,需要的朋友可以过来参考下,希望对大家有所帮助
    2014-02-02
  • php+resumablejs实现的分块上传 断点续传功能示例

    php+resumablejs实现的分块上传 断点续传功能示例

    这篇文章主要介绍了php+resumablejs实现的分块上传 断点续传功能,结合实例形式分析了php+resumablejs文件传输的具体实现步骤与相关操作技巧,需要的朋友可以参考下
    2017-04-04
  • 如何用PHP编写简单的api数据接口

    如何用PHP编写简单的api数据接口

    这篇文章主要介绍了如何用PHP编写简单的api数据接口,对数据接口感兴趣的同学,可以参考一下,并且亲自试验一下
    2021-04-04

最新评论