Home  >  Article  >  Backend Development  >  Ajax cross-domain solution under PHP - window.name example analysis detailed explanation

Ajax cross-domain solution under PHP - window.name example analysis detailed explanation

coldplay.xixi
coldplay.xixiforward
2020-08-05 16:55:121909browse

Ajax cross-domain solution under PHP - window.name example analysis detailed explanation

The example in this article describes the window.name ajax cross-domain solution under PHP. Share it with everyone for your reference. The details are as follows:

Core principle: The name attribute of the window object is a very special attribute. When the location of the window changes and then is reloaded, its name attribute can still remain unchanged. Change.

According to this principle, we can use iframe in page A to load page B of other domains, and use JavaScript in page B to assign the data that needs to be passed to window.name. After the iframe of page A is loaded, Page A modifies the address of the iframe and changes it to an address in the same domain, and then the value of window.name can be read.

Related learning recommendations: php programming (video)

Example: There are two websites www.a.com and www.b.com, we want to obtain www.b.com/data.html data under www.a.com/a.html.

We need three files:

a.html under www.a.com to obtain data and display
data.html under www.b.com to provide data The proxy.html proxy file under
www.a.com is in the same domain as a.html and is generally an empty html file.

The data.html under www.b.com is as follows:

<!DOCTYPE html>
<html>
<head>
  <meta charset="UTF-8">
  <title>Insert title here</title>
</head>
<body>
  <script type="text/javascript">
    //添加需要传递的数据,大小一般为2M,IE和firefox下可以大至32M左右
    window.name = &#39;[{"name":"test1"},{"name":"test2"}]&#39;;
  </script>
</body>
</html>

The proxy.html under www.a.com is as follows:

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

www.a The a.html under .com is as follows:

<!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>
 
<!-- 显示获取到的数据 -->
<p id="data"></p>
 
<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>

Related video recommendations: PHP programming from entry to proficiency

The above is the detailed content of Ajax cross-domain solution under PHP - window.name example analysis detailed explanation. For more information, please follow other related articles on the PHP Chinese website!

Statement:
This article is reproduced at:jb51.net. If there is any infringement, please contact admin@php.cn delete