Элементарщина. Встраиваемый модуль на js+php+mysql

21 Окт
2011

Введение



Возникла необходимость написать такой модуль (работающий с mysql), который можно было бы максимально просто вставить в свой ресурс любому пользователю, располагающему собственным сайтом.

Вдохновили меня счетчики посещений.

Поскольку решение с iframe является некрасивым и не слишком функциональным, пришлось искать другой способ; поскольку найти его оказалось не так-то просто, и хороших, простых инструкций не было обнаружено, выкладываю здесь свой вариант «пособия для новичков».


Суть



Для начала следует создать, пардон за тавтологию, js-скрипт, создающий скрипт.
Код я максимально упростил (то, что я видел изначально, меня пугало).

script.js
id_info_script=null; //объявляем скрипт

function getinfo()
{
// убиваем скрипт, если он уже был создан
if(id_info_script)document.body.removeChild(id_info_script);

// создаем новый скрипт
id_info_script = document.createElement("script");

// задаем ему тип text/javascript
id_info_script.type = 'text/javascript';

// и ссылаемся на php-файл, лежащий у нас на сервере.
id_info_script.src = 'http://my_site.ru/test.php';

// добавляем созданный элемент в document.body.appendChild(id_info_script);
}

В этот же скрипт можно накидать других функций.

Теперь нужен тот самый красивый и компактный кусок html-кода, который мы любезно предоставим пользователю для вставки в его сайт. Выглядит он просто:






Проще говоря, мы создаем отдельный элемент «target», с которым будем работать, и подгружаем наш js-скрипт.

php-файл с запросом был уже готов, его осталось только чуть подкорректировать: заменить простой вывод информации во всех «echo» на вывод данных внутри конкретного элемента (ну, как обычно в js).
Первым делом находим «target»:
echo 'targeth=document.getElementById(\'target\');'."\r\n";


Потом заставляем все echo выводить данные именно в него запросами типа
echo "targeth.innerHTML = \"Hello World\"\r\n";

Главное — не запутаться в кавычках.
\r\n добавляется в конце каждой строки, поскольку это js, и строкам он придает особое значение.

Данная структура применяется везде, где необходимо обращение к данным сервера в реальном времени. Например, для оперативного появления новых сообщений vkontakte.ru.
Ничего сложного в ней нет, но многие начинающие программисты испытывают трудности (факт) в понимании этого процесса.
По материалам Хабрахабр.



загрузка...

Комментарии:

Наверх