В противном случае возможно загрусить данные с удаленного сайта, только создав динамически таг <script> и указав все данные запроса в URL, в виде GET запроса.
Код который загрузится с удаленного сайта должен вызвать какую-либо функцию JavaScript, что бы сообщить об успешной загрузке данных.
Такой подход реализован в библиотеке Subsys_JsHttpRequest.
А упрощенный вариант реализован в SimpleXMLRPC -- библиотеке, которая реализует несколько разных типов запросов (XMLRPC, получение JSON-кодированных данных при помощи POST запроса и получение данных при помощи включения .js файла с удаленного сервера).
Вот что делает код библиотеки --
span = document.createElement("SPAN");
span.id = "__jsload__" + id;
span.style.display = 'none';
span.innerHTML = 'Text for stupid IE.' +
'' + 'script>';
s = span.getElementsByTagName("script")[0];
s.language = "JavaScript";
document.body.appendChild(span);
setTimeout(function() { if (s.setAttribute) s.setAttribute('src', href); else s.src = href; }, 10);
Т.е. создается span, в нем таг script, a потом в качестве src у скрипта ставится URL. После добавления скрипта в DOM дерево при помощи appendChild начинается скачивание JS скрипта.
После того, как он был скачан -- можно либо обращаться к его переменным и функциям, так как js файл полностью импортируется в область видимости(scope) загружающе программы --
при условии, что загруженный файл имел в себе правильный JS код, либо -- как это делает SimpleXMLRPC -- JS файл состоит из строчки типа
XMLRPC.dataReceived(id, ActualData);, которая и дает знать вызывающему скрипту, что данные уже загружены.
PS. нужно быть внимательным и удалять старые, ненужные объекты <script>
Author: Gaspar Chilingarov
Keywords: javascript, ajax, web 2.0, xmlrpc, json-rpc, simplexmlrpc
No comments:
Post a Comment