Scène
S'il y a deux serveurs avec des noms de domaine différents, A.com et B.com, dans l'interface B.Com/B_Return_Js.PHP, certaines données peuvent être obtenues. Bien sûr, s'il se trouve sur la page 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 A.COM.
Code d'interface de b_return_js.php:
La copie de code est la suivante:
$ a = array (
Array ('Username' => 'Tony', 'Age' => 25),
array ('username' => 'yimeng', 'age' => 23),
Array ('Username' => 'Ermeng', 'Age' => 22),
Array ('Username' => 'SanMeng', 'Age' => 21),
));
Shuffle ($ a);
echo 'var userdata =' .json_encode ($ a). ';'; // Généralement, s'il s'agit d'une demande de site de B.Com, elle renverra directement JSON_ENCODOD ($ a). Cependant, si vous souhaitez utiliser l'attribut SRC pour atteindre un domaine croisé, nous devons ici attribuer cette valeur à une variable JS pour nous assurer que ces données peuvent être obtenues et utilisées dans la page chargée par la balise de script.
Implémentation simple
Il existe un moyen facile d'aller directement sur la page sous A.com
La copie de code est la suivante:
<script src = "http://b.com/b_return_js.php"> </ script>
De cette façon, les données renvoyées dans cette interface peuvent être directement obtenues à partir de 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, la méthode qui peut obtenir de nouvelles données d'interface à tout moment n'est pas très appropriée. Par exemple, en cliquant sur un bouton pour obtenir des données partiellement actualisées à partir de cette interface, cette méthode est quelque peu inappropriée.
Implémentation de classe AJAX
En fait, l'idée d'implémentation de la classe Ajax mentionnée ci-dessus est de régénérer la balise ci-dessus lorsque la condition AJAX est déclenchée, afin d'obtenir à nouveau des données de l'interface. Cependant, en fait, il est encore un peu difficile à mettre en œuvre (au moins cela m'a pris beaucoup d'efforts).
Sur le code:
S'il y a un bouton sous la page A.com/scriptsrc.php
<input type = "Button" id = "ajax_request_from_b" value = "demande de b.com" />
Chaque clic obtiendra les données de l'interface b.com/b_return_js.php, similaire au code d'implémentation AJAX:
La copie de code est la suivante:
Fonction CreateScript ()
{
//console.log(ele);
ele.src = 'http://b.com/b_return_js.php';
ele.type = 'text / javascript';
ele.Language = 'JavaScript';
}
fonction getData ()
{
console.log (userData);
}
$ ('# ajax_request_from_b'). Cliquez sur (fonction () {
// La 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 s'assurer que les données peuvent être obtenues à partir du serveur inter-domaine.
if (ele && ele.parentNode)
{
//ele.parentnode.removechild(ele); // Ce type de suppression ne peut pas complètement supprimer ELE de mémoire, mais supprimez uniquement l'emplacement dans le DOM
pour (propriété var dans ele) {
supprimer ele [propriété]; // Supprimer complètement
}
}
ele = document.createElement ('script'); // c'est un nouvel ele
createScript ();
document.getElementsByTagName ("Head") [0] .APPENDCHILD (ELE);
ele.onload = function () {getData ()}; // L'UserData peut être obtenu après le chargement de l'élément de script. Chaque fois que les informations utilisateur sont obtenues dans un ordre aléatoire.
});
De cette façon, chaque fois que vous cliquez sur le bouton, vous obtiendrez à nouveau les données de l'interface, et l'effet est similaire à Ajax, mais il s'agit d'une méthode inter-domaine de JS. Bien que ce soit un peu ingrat, c'est toujours une façon de penser.