Heim  >  Artikel  >  Backend-Entwicklung  >  Ajax-Domänenübergreifende Lösung unter PHP – ausführliche Erläuterung der Beispielanalyse von window.name

Ajax-Domänenübergreifende Lösung unter PHP – ausführliche Erläuterung der Beispielanalyse von window.name

coldplay.xixi
coldplay.xixinach vorne
2020-08-05 16:55:121952Durchsuche

Ajax-Domänenübergreifende Lösung unter PHP – ausführliche Erläuterung der Beispielanalyse von window.name

Dieser Artikel beschreibt die domänenübergreifende window.name-Lösung für Ajax unter PHP. Teilen Sie es als Referenz mit allen. Die Details lauten wie folgt:

Grundprinzip: Das Namensattribut des Fensterobjekts ist ein ganz besonderes Attribut. Wenn sich die Position des Fensters ändert und dann neu geladen wird, kann sein Namensattribut unverändert bleiben .

Nach diesem Prinzip können wir Iframe auf Seite A verwenden, um Seite B anderer Domains zu laden, und JavaScript auf Seite B verwenden, um die Daten zuzuweisen, die an window.name übergeben werden müssen, nachdem der Iframe von Seite A geladen wurde , Seite A ändert die iframe-Adresse, ändert sie in eine Adresse in derselben Domäne und kann dann den Wert von window.name lesen.

Verwandte Lernempfehlungen: php-Programmierung(Video)

Beispiel: Es gibt zwei Websites www.a.com und www.b.com, wir möchten sie unter www.a.com/a herunterladen .html Rufen Sie www.b.com/data.html-Daten ab.

Wir benötigen drei Dateien:

a.html unter www.a.com, um Daten abzurufen und anzuzeigen
data.html unter www.b.com, um Daten bereitzustellen
proxy.html unter www.a.com Proxy-Datei, in derselben Domäne wie a.html, ist normalerweise eine leere HTML-Datei.

data.html unter www.b.com lautet wie folgt:

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

proxy.html unter www.a.com lautet wie folgt:

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

a.html unter www.a.com lautet wie folgt:

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

Empfehlung für entsprechende Videos: PHP-Programmierung vom Anfänger bis zum Meister

Das obige ist der detaillierte Inhalt vonAjax-Domänenübergreifende Lösung unter PHP – ausführliche Erläuterung der Beispielanalyse von window.name. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
Dieser Artikel ist reproduziert unter:jb51.net. Bei Verstößen wenden Sie sich bitte an admin@php.cn löschen