Escena
Si hay dos servidores con diferentes nombres de dominio, A.com y B.com, en la interfaz b.com/b_return_js.php, se pueden obtener algunos datos. Por supuesto, si está en la página de B.Com, puede usar AJAX para solicitar directamente esta interfaz, pero ¿qué pasa si se solicita en la página A.com?
Código de interfaz de b_return_js.php:
La copia del código es la siguiente:
$ a = matriz (
Array ('UserName' => 'Tony', 'Age' => 25),
Array ('UserName' => 'yImeng', 'Age' => 23),
array ('username' => 'ermeng', 'edad' => 22),
Array ('UserName' => 'Sanmeng', 'Age' => 21),
);
Shuffle ($ A);
echo 'var user userData =' .json_encode ($ a). ';'; // Generalmente, si se trata de una solicitud del sitio de B.com, devolverá directamente JSON_ENCODE ($ A). Sin embargo, si desea utilizar el atributo SRC para lograr el dominio cruzado, aquí debemos asignar este valor a una variable JS para garantizar que estos datos se puedan obtener y utilizar en la página cargada por la etiqueta de script.
Implementación simple
Hay una manera fácil de ir directamente a la página bajo A.com
La copia del código es la siguiente:
<script src = "http://b.com/b_return_js.php"> </script>
De esta manera, los datos devueltos en esta interfaz se pueden obtener directamente de la página A.com.
Pero hay un defecto aquí. Estos datos solo se pueden obtener cuando se carga la página. Si queremos usar AJAX, el método que puede obtener nuevos datos de interfaz en cualquier momento no es muy adecuado. Por ejemplo, haciendo clic en un botón para obtener datos parcialmente renovados de esta interfaz, este método es algo inapropiado.
Implementación de clase AJAX
De hecho, la idea de implementar la clase AJAX mencionada anteriormente es regenerar la etiqueta anterior cuando se activa la condición AJAX, para obtener datos de la interfaz nuevamente. Sin embargo, de hecho, todavía es un poco difícil de implementar (al menos me tomó mucho esfuerzo).
En el código:
Si hay un botón debajo de la página A.com/scriptsrc.php
<input type = "Button" id = "AJAX_REQUEST_FROM_B" VALOR = "Solicitud de B.com"/>
Cada clic obtendrá datos de la interfaz b.com/b_return_js.php, similar al código de implementación de AJAX:
La copia del código es la siguiente:
función createScript ()
{
//console.log(ele);
ele.src = 'http://b.com/b_return_js.php';
ele.type = 'text/javaScript';
ele.language = 'javaScript';
}
función getData ()
{
console.log (userData);
}
$ ('#AJAX_REQUEST_FROM_B'). Click (function () {
// La etiqueta de script debe volver a cargarse cada vez, por lo que una nueva etiqueta de script se debe regenerar cada vez para garantizar que los datos se puedan obtener del servidor de dominio cruzado.
if (ele && ele.parentnode)
{
//ele.parentnode.removechild(ele); // Este tipo de deleción no puede eliminar por completo ele de la memoria, sino que solo elimine la ubicación en el DOM
para (propiedad var en ele) {
eliminar ele [propiedad]; // Eliminar completamente
}
}
ele = document.createElement ('script'); // Este es un nuevo ele
creeScript ();
document.getElementsBytagName ("Head") [0] .AppendChild (ele);
ele.onload = function () {getData ()}; // Los datos de usuario se pueden obtener después de cargar el elemento de script. Cada vez que la información del usuario se obtiene en un orden aleatorio.
});
De esta manera, cada vez que haga clic en el botón, obtendrá los datos de la interfaz nuevamente, y el efecto es similar a AJAX, pero este es un método de dominio cruzado de JS. Aunque es un poco ingrato, sigue siendo una forma de pensar.