Szene
Wenn es zwei Server mit unterschiedlichen Domänennamen gibt, a.com und b.com, können Sie einige Daten in der Schnittstelle b.com/b_return_js.php abrufen. Wenn es sich auf der Seite von b.com befindet, können Sie diese Schnittstelle natürlich direkt mit Ajax anfordern, aber was ist, wenn sie auf der Seite von a.com angefordert wird?
Schnittstellencode von b_return_js.php:
echo 'var userdata = '.json_encode($a).';'; //Im Allgemeinen wird json_encode($a) direkt zurückgegeben, wenn es sich um eine In-Site-Anfrage von b.com handelt, aber wenn Sie Wenn Sie das src-Attribut verwenden möchten, um domänenübergreifend zu erreichen, müssen wir diesen Wert einer js-Variablen zuweisen, um sicherzustellen, dass diese Daten nach dem Laden des Skript-Tags abgerufen und auf der Seite verwendet werden können.
Einfache Implementierung
Es gibt eine einfache Möglichkeit, direkt zur Seite unter a.com zu gelangen
Auf diese Weise können die von dieser Schnittstelle zurückgegebenen Daten direkt auf der a.com-Seite abgerufen werden.
Hier gibt es jedoch einen Fehler. Diese Daten können nur beim Laden der Seite abgerufen werden. Wenn wir Ajax verwenden möchten, um neue Schnittstellendaten abzurufen, ist dies beispielsweise nicht möglich Schnittstelle. Teilweise Datenaktualisierung, diese Methode ist etwas ungeeignet.
Ajax-ähnliche Implementierung
Tatsächlich besteht die Idee bei der Implementierung der oben genannten Ajax-ähnlichen Sache darin, das obige Tag neu zu generieren, wenn die Ajax-Bedingung ausgelöst wird, um erneut Daten von der Schnittstelle zu erhalten, aber tatsächlich ist dies der Fall immer noch etwas schwierig umzusetzen (zumindest für mich) Es hat viel Mühe gekostet).
Code hochladen:
Angenommen, es gibt eine Schaltfläche unter der Seite a.com/scriptSrc.php
Bei jedem Klick werden Daten von der Schnittstelle b.com/b_return_js.php abgerufen, ähnlich dem Ajax-Implementierungscode:
Funktion getData()
{
console.log(userdata);
}
$('#ajax_request_from_b').click(function(){
//Dieses Skript-Tag muss jedes Mal neu geladen werden, daher muss jedes Mal ein neues Skript-Tag neu generiert werden, um sicherzustellen, dass Daten vom domänenübergreifenden Server abgerufen werden können
If(ele && ele.parentNode)
{
//ele.parentNode.removeChild(ele); //Diese Art des Löschens kann ele nicht vollständig aus dem Speicher löschen, sondern entfernt nur seine Position im Dom
for (var property in ele) {
delete ele[property]; delete ele[property];
}
}
ele = document.createElement('script'); //Dies ist ein neues ele
CreateScript();
Document.getElementsByTagName("head")[0].appendChild(ele);
ele.onload = function(){getData()}; // Benutzerdaten können nach dem Laden des Skriptelements abgerufen werden. Benutzerinformationen werden jedes Mal in zufälliger Reihenfolge abgerufen
});
Auf diese Weise erhalten Sie jedes Mal, wenn Sie auf die Schaltfläche klicken, die Daten erneut von der Schnittstelle. Der Effekt ist ähnlich wie bei Ajax, aber dies ist eine domänenübergreifende js-Methode immer noch eine Idee.