Scène
S'il y a deux serveurs avec des noms de domaine différents, a.com et b.com, vous pouvez récupérer quelques données dans l'interface b.com/b_return_js.php. Bien sûr, si c'est sur la page de b.com, vous pouvez utiliser ajax pour demander directement cette interface, mais que se passe-t-il si elle est demandée sur la page de a.com.
Code d'interface de b_return_js.php :
echo 'var userdata = '.json_encode($a).';'; //Généralement, s'il s'agit d'une requête sur site de b.com, json_encode($a) sera renvoyé directement, mais si vous Si vous souhaitez utiliser l'attribut src pour réaliser des opérations inter-domaines, nous devons ici attribuer cette valeur à une variable js pour garantir que ces données peuvent être obtenues et utilisées dans la page après le chargement de la balise de script.
Mise en œuvre simple
Il existe un moyen simple d'accéder directement à la page sous a.com
De cette manière, les données renvoyées par cette interface peuvent être directement obtenues sur la page a.com.
Mais il y a un défaut ici. Ces données ne peuvent être obtenues que lorsque la page est chargée. Si nous voulons utiliser ajax pour obtenir de nouvelles données d'interface à tout moment, cela ne convient pas, par exemple, cliquer sur un bouton pour les obtenir. interface. Actualisation partielle des données, cette méthode est quelque peu inappropriée.
Implémentation de type Ajax
En fait, l'idée d'implémenter l'ajax-like mentionné ci-dessus est de régénérer la balise ci-dessus lorsque la condition ajax est déclenchée, afin d'obtenir à nouveau les données de l'interface, mais en fait c'est toujours un peu difficile à mettre en œuvre (du moins pour moi, cela a demandé beaucoup d'efforts).
Code de téléchargement :
Supposons qu'il y ait un bouton sous la page a.com/scriptSrc.php
Chaque clic obtiendra des données de l'interface b.com/b_return_js.php, similaire au code d'implémentation ajax :
fonction getData()
{
console.log(userdata);
>
$('#ajax_request_from_b').click(function(){
//Cette balise de script doit être rechargée à chaque fois, donc une nouvelle balise de script doit être régénérée à chaque fois pour garantir que les données peuvent être obtenues à partir du serveur inter-domaines
Si(ele && ele.parentNode)
{
//ele.parentNode.removeChild(ele); //Ce type de suppression ne peut pas supprimer complètement ele de la mémoire, mais supprime uniquement sa position dans le dom
pour (var propriété en ele) {
supprimer la propriété ; supprimer ele[propriété] ;
}
>
ele = document.createElement('script'); //Ceci est un nouvel ele
CreateScript();
Document.getElementsByTagName("head")[0].appendChild(ele);
ele.onload = function(){getData()}; // Les données utilisateur peuvent être obtenues après le chargement de l'élément de script. Chaque fois, les informations utilisateur sont obtenues dans un ordre aléatoire
.
});