Cena
Se houver dois servidores com nomes de domínio diferentes, a.com e b.com, na interface b.com/b_return_js.php, alguns dados poderão ser obtidos. Obviamente, se estiver na página B.com, você poderá usar o AJAX para solicitar diretamente essa interface, mas e se for solicitado na página A.com.
Código da interface de b_return_js.php:
A cópia do código é a seguinte:
$ a = matriz (
Array ('Nome de usuário' => 'Tony', 'Age' => 25),
Array ('nome de usuário' => 'yimeng', 'idade' => 23),
Array ('nome de usuário' => 'ermeng', 'idade' => 22),
Array ('Nome de usuário' => 'Sanmeng', 'Age' => 21),
);
shuffle ($ a);
echo 'var userData =' .json_encode ($ a). ';'; // Geralmente, se for uma solicitação de site do B.com, ele retornará diretamente JSON_ENCODE ($ A). No entanto, se você deseja usar o atributo SRC para obter domínio cruzado, aqui precisamos atribuir esse valor a uma variável JS para garantir que esses dados possam ser obtidos e usados na página carregada pela tag de script.
Implementação simples
Existe uma maneira fácil de ir diretamente na página em A.com
A cópia do código é a seguinte:
<script src = "http://b.com/b_return_js.php"> </script>
Dessa forma, os dados retornados nesta interface podem ser obtidos diretamente na página A.com.
Mas há uma falha aqui. Esses dados só podem ser obtidos quando a página é carregada. Se quisermos usar o AJAX, o método que pode obter novos dados de interface a qualquer momento não é muito adequado. Por exemplo, clicando em um botão para obter dados parcialmente atualizados a partir dessa interface, esse método é um pouco inapropriado.
Classe AJAX Implementation
De fato, a idéia de implementar a classe Ajax mencionada acima é regenerar a tag acima quando a condição do Ajax for acionada, de modo a obter dados da interface novamente. No entanto, de fato, ainda é um pouco difícil de implementar (pelo menos foi preciso muito esforço para mim).
No código:
Se houver um botão sob a página A.com/scriptsrc.php
<input type = "button" id = "ajax_request_from_b" value = "solicitação de b.com"/>
Cada clique obterá dados da interface b.com/b_return_js.php, semelhante ao código de implementação do AJAX:
A cópia do código é a seguinte:
função createScript ()
{
//console.log(ele);
ele.src = 'http://b.com/b_return_js.php';
ele.type = 'text/javascript';
ele.Language = 'JavaScript';
}
função getData ()
{
console.log (userData);
}
$ ('#ajax_request_from_b'). clique (function () {
// A tag de script precisa ser recarregada todas as vezes; portanto, uma nova tag de script deve ser regenerada sempre para garantir que os dados possam ser obtidos no servidor de domínio cruzado.
if (ele && ele.parentnode)
{
//ele.parentnode.removechild(ele); // Esse tipo de exclusão não pode excluir completamente o ELE da memória, mas apenas remova a localização no DOM
para (propriedade var no ele) {
excluir ele [propriedade]; // Exclua completamente
}
}
ele = document.createElement ('script'); // este é um novo ele
createScript ();
document.getElementsByTagName ("Head") [0] .AppendChild (ELE);
ele.onload = function () {getData ()}; // Os dados do usuário podem ser obtidos após o carregamento do elemento de script. Cada vez que as informações do usuário são obtidas em um pedido aleatório.
});
Dessa forma, toda vez que você clicar no botão, você obterá os dados da interface novamente e o efeito é semelhante ao Ajax, mas este é um método de domínio cruzado de JS. Embora seja um pouco ingrato, ainda é uma maneira de pensar.