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

coldplay.xixi
Release: 2023-04-09 12:46:01
forward
1943 people have browsed it

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>
Copy after login

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>
Copy after login

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>
Copy after login

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!

Related labels:
source:jb51.net
Statement of this Website
The content of this article is voluntarily contributed by netizens, and the copyright belongs to the original author. This site does not assume corresponding legal responsibility. If you find any content suspected of plagiarism or infringement, please contact admin@php.cn
Popular Tutorials
More>
Latest Downloads
More>
Web Effects
Website Source Code
Website Materials
Front End Template
About us Disclaimer Sitemap
php.cn:Public welfare online PHP training,Help PHP learners grow quickly!