Maison  >  Article  >  développement back-end  >  Solution multidomaine Ajax sous PHP - exemple d'analyse window.name explication détaillée

Solution multidomaine Ajax sous PHP - exemple d'analyse window.name explication détaillée

coldplay.xixi
coldplay.xixiavant
2020-08-05 16:55:121952parcourir

Solution multidomaine Ajax sous PHP - exemple d'analyse window.name explication détaillée

L'exemple de cet article décrit la solution cross-domain ajax window.name sous PHP. Partagez-le avec tout le monde pour votre référence. Les détails sont les suivants :

Principe de base : L'attribut name de l'objet window est un attribut très spécial lorsque l'emplacement de la fenêtre change puis est rechargé, son nom. L'attribut peut toujours rester inchangé.

Selon ce principe, nous pouvons utiliser l'iframe dans la page A pour charger la page B d'autres domaines, et utiliser JavaScript dans la page B pour attribuer les données qui doivent être transmises à window.name après l'iframe de. la page A est chargée, la page A modifie l'adresse de l'iframe et la change en une adresse dans le même domaine, puis la valeur de window.name peut être lue.

Recommandations d'apprentissage associées : programmation php (vidéo)

Exemple : Il existe deux sites Web www.a.com et www.b.com, nous souhaitons obtenir les données www.b.com/data.html sous www.a.com/a.html.

Nous avons besoin de trois fichiers :

a.html sous www.a.com pour obtenir des données et afficher
data.html sous www.b.com pour fournir des données
Le fichier proxy proxy.html sous www.a.com se trouve dans le même domaine que a.html et est généralement un fichier html vide.

Le data.html sous www.b.com est le suivant :

<!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>

Le proxy.html sous www.a.com est le suivant :

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

www.a Le a.html sous .com est le suivant :

<!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>

Recommandations vidéo associées : Programmation PHP de l'entrée à la maîtrise

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Déclaration:
Cet article est reproduit dans:. en cas de violation, veuillez contacter admin@php.cn Supprimer