Как заставить AJAX читать между строк?

www.karman.com.ua
портал о хостинге в Украине
Хостинг + Украина = Karman.com.ua

Сайт от А до Б

/

Основы сайта

/

Интересные скрипты

/

Изучаем PHP

/

Как заработать на сайте

/

Раскрутка сайта

/

CMS


Как заставить AJAX читать между строк? 

Еще по теме:
  Как купить и настроить GSM шлюз для рассылки SMS сообщений
  меню на AJAX
  xAJAX, projax, sAJAX
  Построение системы ссылок для SEO
  Мне очень нравится работа хостинга,Быстро и Надежно
  Где посмотреть настройки php.ini
  Длина строки
  Как добиться, чтоб Ваш сайт быстро проиндексировали поисковые системы

Начнем...

На страницах вашего сайта содержится множество специализированных терминов. Когда пользователь просматривает сайт, у него могут возникать вопросы касательно этих терминов. Как сделать так, чтобы посетитель сайта по мере возникновения вопросов мог незамедлительно получать на них ответы? Раньше термины на страницах сайта оформлялись как ссылки и пользователь при желании мог кликать по ним и получать окно с контекстной подсказкой. Это подход достаточно неуклюжий, он отнимает у пользователя слишком много времени - на то, чтобы кликнуть по ссылке, дождаться загрузки окна и затем закрыть окно. В эпоху AJAX мы можем быть ближе к пожеланиям пользователей. Мы можем сделать так, чтобы уже при наведении мыши на термин незамедлительно появлялось сообщение с подсказкой и как только курсор мыши сдвинут с термина, сообщение исчезало. Наличие этого сервиса не отразится на объеме страниц сайта. При запросе контекстной подсказки Java Script будет обращаться к внешнему словарю, получать содержание и отображать его.

Метод получения информации по неявному запросу может найти применение не только в словаре терминов. Обращали ли вы внимание на ссылки с двойным подчеркиванием в таких проектах как hotscripts.com и devarticles.com? Это контекстная реклама на основе движка IntelliTXT компании Vibrant Media. При наведении курсора мыши на подобную ссылку появляется окно с рекламным предложением на соответствующую тему. Эта технология уже получила название in-text advertising.

Все чаще и чаще подобный метод применяется и на новостных порталах. Посетители видят на главной странице портала лишь заголовки новостей. Однако при наведении курсора мыши на заголовок новости они получают ее краткое описание. Таким образом, на главной странице портала можно вместить куда как больше новостей. Посетитель портала увидит заголовки и для того, чтобы получить анонсы новостей, ему будет достаточно пробежаться курсором мыши по заголовкам.

Давайте теперь рассмотрим, каким образом реализуется контекстная подсказка с помощью AJAX. Программисту, освоившему этот метод, не составит труда заставить портал комментировать новости по запросу или же написать модуль in-text advertising.

Итак, очевидно нам следует позаботиться об окне сообщения, того самого, которое будет появляться каждый раз, когда посетитель наводит курсор на термин. Для того, чтобы окно появлялось и исчезало мгновенно, следует поместить его на скрытом DIV.

 
  1. "InstantMessage" class="instant_message"
  

     
    Для простоты эксперимента мы можем оформить его в стиле системных сообщений MS Windows.

     
    1.   

     

    Окно должно появиться в тот момент, когда посетитель навел курсор мыши на термин и исчезнуть, когда курсор мыши будет за пределами термина. Причем, в тот самый момент окно должно содержать уже не пробел, а текст определения термина. Таким образом, мы должны поместить термины в тексте документа в inline тег, поддерживающий события onMouseOver и onMouseOut. Первому событию следует назначить функцию JavaScript, которая получит определение термина, поместит его в окно сообщения и покажет окно. Второму событию требуется назначить функцию, которая просто скроет окно сообщения.

     
    1. "getDefinition('термин', event);"  
    2.  onmouseout="hideMessage();">термин   

     

    В параметре функции, отображающей окно (getDefenition) сообщения надо указать термин. Этот термин будет использован для запроса текста определения посредством AJAX. Так как при показе окна нам потребуется его позиционировать под курсором мыши для поддержки Gecko-базированых браузеров, в эту функцию также следует передать параметр event. Функция для сокрытия окна (hideMessage) не требует каких-либо параметров. Теперь наша задача - при вызове функции getDefinition заставить JavaScript позиционировать окно сообщения.

     
    1. function adjustMessage(evt) {   
    2. MessageObj = document.getElementById('InstantMessage');   
    3. if (isThisMozilla) event=evt;   
    4.   
    5. var rightedge = document.body.clientWidth-event.clientX;   
    6. var bottomedge = document.body.clientHeight-event.clientY;   
    7. if (rightedge < MessageObj.offsetWidth)   
    8. MessageObj.style.left = document.body.scrollLeft +   
    9.                                 event.clientX - MessageObj.offsetWidth;   
    10. else  
    11. MessageObj.style.left = document.body.scrollLeft + event.clientX;   
    12. if (bottomedge < MessageObj.offsetHeight)   
    13. MessageObj.style.top = document.body.scrollTop + event.clientY -   
    14.                                MessageObj.offsetHeight;   
    15. else  
    16. MessageObj.style.top = document.body.scrollTop + event.clientY;   
    17.   
    18. MessageObj.innerHTML = 'Loading...';   
    19. MessageObj.style.visibility = "visible";   
    20. }   

     

    Итак, мы имеем окно сообщения, рапортующее о загрузке данных. Теперь следует выполнить запрос к контроллеру за определением термина. Вы можете написать собственные функции для обслуживания AJAX запросов. Но если вы только начинаете работать с AJAX, я могу порекомендовать вам готовую библиотеку от Yahoo. В этом случае запрос будет выглядеть так:

     
    1. function getDefinition(term,evt){   
    2. adjustMessage(evt);   
    3. var request = YAHOO.util.Connect.asyncRequest('POST',   
    4.  'http://адрес_контроллера', callback, 'term='+term);   
    5. }   

     

    Раз мы запрашиваем контроллер, очевидно, нам надлежит его написать. В общем случае, это самая простая часть. Задача контроллера - вернуть описание термина, переданного в POST. Каким бы языком программирования мы не пользовались при написании контроллера, нам достаточно выполнить несколько простейших операций. соединиться с базой данных выполнить SQL запрос для получения определения термина отобразить на консоль результат в следующем виде:

     
    1. {   
    2. "errormsg" : "в случае ошибки ее код",   
    3. "content" : "текст определения"  
    4. }   

     

    Это структура данных, известная как JSON. Она воспринимается JavaScript в явном виде, как <родная>. В случае использования AJAX-библиотеки YAHOO ответ контроллера обслуживается следующей конструкцией

     
    1. var handleSuccess = function(o){   
    2. if(o.responseText !== undefined){   
    3. showMessage(o.responseText);   
    4. }   
    5. };   
    6.   
    7. var handleFailure = function(o){   
    8. if(o.responseText !== undefined){   
    9. showMessage("Connection Error");   
    10. }   
    11. };   
    12.   
    13. var callback =   
    14. {   
    15.   success:handleSuccess,   
    16.   failure:handleFailure,   
    17.   argument:['foo','bar']   
    18. };   

     

    Нам осталось лишь описать функцию showMessage(), которая помещает принятый текст определения в окно сообщения

     
    1. function showMessage(json) {   
    2. var respondStructure = eval( '(' + json + ')' );    
    3. MessageObj.innerHTML = respondStructure.content;   
    4. return false;   
    5. }   

     

    Как вы понимаете, для сокрытия окна сообщения потребуется лишь изменить атрибут объекта

     
    1. function hideMessage(){   
    2. var MessageObj=document.getElementById('InstantMessage');   
    3. MessageObj.style.visibility="hidden";   
    4. }   

     

    Когда вы будете опробовать этот пример, едва ли вы встретитесь с проблемами под браузером MS IE, однако, в FireFox вы можете обнаружить мерцание окна сообщения. Это связано с тем, что FireFox своеобразно обслуживает события onMouseOver/onMouseOut. Впрочем, эту проблему можно решить путем расстановки флагов задержки в функциях обслуживания этих событий.

    Работу примера можно увидеть здесь.


    Чтобы обсудить это в форуме, нажмите здесь.


    Хостинг-источник: http://karman.com.ua, http://ajaxhelp.net/ajaxpage2.html
      Способы асинхронного взаимодействия с сервером существуют уже много лет. В чём же новизна подхода AJAX?
      Для чего нужно было давать AJAX название?


    Есть вопросы о хостинге и о сайтах?
    и получи ответ от профессионалов, которые обожают помогать людям :).
    Еще по теме:
      Говеные рифмы читать радостно!
      Национальный домен островов Уоллис и Футуна пытаются реанимировать
      Скрытые настройки Бегуна. Пример 2
      Сетевые сервисы на AJAX: Whois, Ping, Tracert, DNS records и др.
      Операторы реестров поднимают цены
      Скрытые настройки Бегуна: Фон и рамка
      Системы управления контентом и построение вашего интернет-бизнеса
      Не ждите быстрого заработка в сети!
      Использование построителя лент новостей, для добавления в ленты RSS
      Быстрое развитие домена RU соответствует росту числа пользователей Интернета в России
      Всегда ли приложение AJAX представляет лучшее взаимодействие с пользователем, чем традиционно веб-приложение?
      Проще ли разработать приложение AJAX по сравнению с традиционным веб-приложением?
      AJAX это технологическая платформа или всего лишь стиль проектирования?
    © СПД Праведно-Счастливый Аладдин Ярославович, 2004-2008. Все права защищены. При цитировании материалов ссылка на www.karman.com.ua обязательна. Редакция "Кармана" может не разделять точку зрения авторов статей, сообщений и ответственности за их содержание не несет.

    Быстрый переход к содержимому сайта Karman.com.ua:
    Новости, советы, углубленные знания, знания для новичков, законодательство, интересные скрипты, фотогалереи, отчеты, статьи о хостинге: 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24
    Часто задаваемые общие вопросы о хостинге, про FTP, PHPMyAdmin и MySQL, CPanel, Предустановленные скрипты, WHM, Cron, .htaccess, SSH, Паролирование директорий, О доменах, о работе с сайтом, о Раскрутке сайта, об Электронной почте, про Основы web-программирования: 0, 1
    Энциклопедия основных терминов хостинга, программного обеспечения, железной стороны хостинга, технологий, электронной почты и доменов: 0, 1, 2, 3, 4, 5, 6
    Сайты о хостинге (форумы, хостинг-провайдеры, студии веб-дизайна, домен-регистраторы, инструментарии в помощь вебмастеру): 0, 1, 2

    Rambler's Top100