Сцена
Если есть два сервера с разными доменными именами, A.com и B.com, в интерфейсе b.com/b_return_js.php, некоторые данные могут быть получены. Конечно, если это на странице B.com, вы можете использовать Ajax для непосредственного запроса этого интерфейса, но что, если он запрашивается на странице A.com.
Код интерфейса b_return_js.php:
Кода -копия выглядит следующим образом:
$ a = массив (
массив ('username' => 'tony', 'age' => 25),
массив ('username' => 'yimeng', 'age' => 23),
массив ('username' => 'ermeng', 'age' => 22),
Array ('username' => 'sanmeng', 'age' => 21),
);
Shuffle ($ a);
echo 'var userdata =' .json_encode ($ a). ';'; // Как правило, если это запрос сайта от b.com, он будет непосредственно возвращать json_encode ($ a). Однако, если вы хотите использовать атрибут SRC для достижения междомена, здесь нам нужно присвоить это значение переменной JS, чтобы убедиться, что эти данные можно получить и использовать на странице, загруженной тегом скрипта.
Простая реализация
Есть простой способ пойти прямо на страницу под A.com
Кода -копия выглядит следующим образом:
<script src = "http://b.com/b_return_js.php"> </script>
Таким образом, данные, возвращаемые в этом интерфейсе, могут быть непосредственно получены со страницы A.com.
Но здесь есть недостаток. Эти данные могут быть получены только при загрузке страницы. Если мы хотим использовать AJAX, метод, который может получить новые данные интерфейса в любое время, не очень подходит. Например, нажав кнопку, чтобы получить данные, частично обновленные от этого интерфейса, этот метод несколько неуместен.
Класс Ajax реализация
Фактически, идея реализации класса Ajax, упомянутого выше, состоит в том, чтобы регенерировать вышеуказанный тег, когда условие AJAX запускается, чтобы снова получить данные из интерфейса. Однако на самом деле это все еще немного сложно реализовать (по крайней мере, мне потребовалось много усилий).
На коде:
Если на странице A.com/scriptsrc.php есть кнопка A.com/scriptsrc.php
<input type = "button" id = "ajax_request_from_b" value = "Запрос от b.com"/>
Каждый щелчок получает данные из интерфейса b.com/b_return_js.php, аналогично коду реализации AJAX:
Кода -копия выглядит следующим образом:
Функция createScript ()
{
//console.log(ele);
ele.src = 'http://b.com/b_return_js.php';
ele.type = 'text/javascript';
ele.language = 'javascript';
}
функция getData ()
{
console.log (userdata);
}
$ ('#ajax_request_from_b'). Click (function () {
// Тег сценария должен быть перезагружен каждый раз, поэтому новый тег сценария должен быть восстановлен каждый раз, чтобы гарантировать, что данные можно получить с сервера поперечного домена.
if (ele && ele.parentnode)
{
//ele.parentnode.removechild(ele); // Этот вид удаления не может полностью удалить ELE из памяти, но удалить только место в DOM
для (var свойство в Ele) {
удалить Ele [Property]; // удалить полностью
}
}
ele = document.createElement ('script'); // это новый Ele
createScript ();
document.getElementsbytagname ("head") [0] .appendchild (ele);
ele.onload = function () {getData ()}; // userData можно получить после загрузки элемента сценария. Каждый раз, когда пользовательская информация получается в случайном порядке.
});
Таким образом, каждый раз, когда вы нажимаете на кнопку, вы снова получите данные из интерфейса, и эффект похож на Ajax, но это метод JS поперечного домана. Хотя это немного неблагодарно, это все еще способ мышления.