« Поставить закладку » « Сделать стартовой »

« Форумы » « Блоги » « Статьи » « Новости » « Файлы » « Realcoding IRC » « Site map » « Поиск »


Главная Главная
Анонсы Анонсы
Форумы Форумы
Каталог Каталог
Поиск Поиск
Опросы Опросы
Книжный магазин Книжный магазин
Реклама на сайте
Публикации Публикации
Партнеры Партнеры
Карта Карта сайта
Рассылки Рассылки
RSS экспорт
Настройки Настройки
О нас пишут О нас пишут
Контакты Контакты
Гостевая книга Гостевая книга



ПнВтСрЧтПтСбВс
          1 2
3 4 5 6 7 8 9
10 11 12 13 14 15 16
17 18 19 20 21 22 23
24 25 26 27 28 29 30
    Популярное
Тип данных

Простейший WYSIWYG (визуальный редактор)

Windows 7: подход к производительности системы

Поиск кратчайшего пути

Создание динамических форм с помощью JavaScript

Oracle Forms. Экспорт данных в Excel

Функция AccessResource

Отладка приложений для Microsoft .NET и Microsoft Windows (+ CD-ROM)

Структура процедуры

Защита сервера DNS - Настройка безопасности




    Архив файлов



    Сообщества

    Документация

    Кто на сайте
Вы не зарегистрированы.
Имя:

Пароль:

Запомнить

Регистрация позволит Вам пользоваться дополнительными сервисами.
Сейчас на сайте:
Гостей: 145
Пользователей: 0

Статьи:: Интернет технологии :: AJAX :: «Hello, закладки!» - Добавить в закладки на AJAX



отправить ссылку другу версия для печати  Обсудить на форуме

«Hello, закладки!» - Добавить в закладки на AJAX

Источник: http://ajax.nnm.ru/

Давайте обсудим более рациональные и эффективные функции для нашего любимого сайта. Начнем с самой простой вещи - кнопки "Добавить в закладки". По моему, это самое наболевшее место, которое так и просится чтобы его Ajax’стили. Вместо того. Чтобы использовать уже готовые движки, мы попытаемся создать свой легкий код сами. Немного теории было в предыдущей новости, а теперь – за дело.



Техзадание для Ajax’тикации кнопки «Добавить в закладки»
Внизу с правой стороны каждой новости зарегистрированным пользователям предоставлена возможность создать логическую ссылку такой новости и поместить ее в свой персональный раздел «Закладки».

1. Пользователь щелкает на кнопку
2. Без перезагрузки страницы посылается запрос на сервер
3. Сервер начинает обработку запроса
4. Пользователь может не дожидаться ответа от сервера и продолжать навигацию
5. Сервер заканчивает обработку запроса и , если мы пожелаем, то может показать пользователю сообщение, что закладка создана.

Воплщение в жизнь

Интерфейс состоит из следующих частей:

JavaScript код, который диспетчеризует клиентские запросы к серверу и управляем пользовательским интерфейсом. Чтобы весь код не загружать на страницу давайте выделим его в отдельный файл. Который назовем, например, nnmAjax.js.

 

  1. /**
    
  2.  * На HTML странице NoName 
    
  3.  * установите єтот код между тєгами <HEAD> 
    
  4. **/
    
  5. <script type="text/javascript" src="nnmAjax.js"></script>
    


Ajax использует программную модель, при которой пользовательские события (нажатие на кнопку) вызывают определенную JavaScript функцию. Можно достичь высокой степени интерактивности с формами, кнопками и дизайном с помощью DOM, для чего необходимо создать логическое поле с уникальным именем вокруг элемента, с которым мы хотим взаимодействовать. В нашем случае, это будет <DIV name="nnmAjax_bookmarks"> </DIV>

Следуя логике событий мы создадим несколько наших функций:
• nnmAjaxCreate() – создает новый XMLHttpRequest объект
• nnmAjaxGet() – управляет событием отправки запроса к серверу
• nnmAjaxReceive() – передает данные, полученные от сервера

Для того, чтобы послать запрос на сервер с помощью JavaScript, необходимо создать объект XMLHttpRequest, поддерживаемый болшинством современных броузеров, о которых мы говорили в . Так как не существует определенного стандарта между различными броузерами, необходимо выбрать для какого броузера какой тип объекта необходим. IE поддерживает XMLHttpRequest совершенно иначе, чем Safari, Opera или Firefox, основанный на Mozilla, что позволяет нам создать два выбора:

 
  1. /*
    
  2.  *  nnmAjax.js
    
  3.  */ 
    
  4. 
    			
  5. 
    			
  6. /* наша основная переменная,которая удерживает XML HTTP Request объект*/
    
  7. var nnmAjax = null;
    
  8. 
    			
  9. /* создает независимый от типа броузера объект XML HTTP Request */
    
  10. function nnmAjaxInit()
    
  11. {   
    
  12.   if(window.XMLHttpRequest) 
    
  13.   {
    
  14.     /* Этот конструктор для Safari,Opera, Firefox */ 
    
  15.     nnmAjax = new XMLHttpRequest();
    
  16.   } 
    
  17.   else if (window.ActiveXObject)  
    
  18.   {
    
  19.     /* Этот конструктор для Internet Explorer */
    
  20.     nnmAjax = new ActiveXObject(Microsoft.XMLHTTP); 
    
  21.   }
    
  22. 
    			
  23.   /* Создаем анонимную функцию, чтобы  отслеживать состояние сервера */
    
  24.   nnmAjax.onreadystatechange = function()
    
  25.   { 
    
  26.     /* Состояние 4 обозначает, что сервер закончил обработку запроса */
    
  27.     if(nnmAjax.readyState == 4)
    
  28.     {
    
  29.        /* Статус 200 обозначает успешное завершение, 
    
  30.         * или возвращает одну из ошибок, например 404 (страница не обнаружена) */
    
  31.       if(nnmAjax.status == 200) {
    
  32.              ..запускаем нашу функцию, которая обработает ответ сервера
    
  33.              nnmAjaxReceive(nnmAjax.responseText);
    
  34.        } else {
    
  35.              alert("Error code " + nnmAjax.status);
    
  36.        }
    
  37.     }
    
  38.   };
    
  39. } 
    


Когда сервер отвечает на запрос, то устанавливется значение аттрибута onreadystatechange:
• responseXml, который содержит XML данные
• responseText содержит простой текст
Однако, ответ сервера приходит не сразу, а через какое-то время, причем такой ответ может вернуть всеми любимую Gateway ошибку или любой другой стандартный код статуса сервера

XMLHttpRequest должен послать серверу два метода:
• open(mode, url, boolean) - открывает соединение с сервером
• send(content) - отправляет запрос серверу

mode стандартные методы W3 HTTP заголовка. Довольно распространенными методами являются следующие два: “GET” - используется, когда необходимо взять данные с сервера; “POST” – когда отправляются на сервер данные из формы и особенно в тех случаях, когда размер посылаемого серверу запроса больше чем 512 байт. Другие возможные методы могут быть HEAD, PUT, DELETE, OPTIONS, TRACE, CONNECT (Пишите методы заглавными буквами, согласно спецификации).

url – представляет адрес сайта, куда посылается запрос. В силу безопасности Ajax не имеет возможности запрашивать данные с другого сервера или с другого домена. В нашем случае мы будем идти сюда (соответственно название дока будет соответствующее для каждого свое): http://doci.nnm.ru/ajax/08.03.2006/ajax_na_noname_1_teoriya_/addme.html

boolean – Этот аргумент контролирует синхронность или асинхронность процесса, иными словами, позволено ли пользователю шнырять по углам сайта во время того, как сервер обрабатывает наш запрос. По умолчанию аттрибут выставлен в асинхронный метод – true.

content - при POST методе здесь необходимо указать поля в формате поле1=данные1& поле2=данные2 В нашем примере таких полей нет – мы ставим null.

 
  1. /*
    
  2. * запрашиваем сервер
    
  3. */
    
  4. var nnm_url = “http://doci.nnm.ru/ajax/08.03.2006/ajax_na_noname_1_teoriya_/addme.html”
    
  5. 
    			
  6. function nnmAjaxGet () {
    
  7. 	nnmAjaxInit();
    
  8. 	nnmAjax.open("GET", nnm_url, true); 
    
  9. 	nnmAjax.send(null); 
    
  10. }
    


На этом построение Ajax закончено. Дальше – это фантазия дизайнера и программиста. В нашем примере мы просто удаляем иконку (параметр response и alert тут вообще не нужны – это для тестированя страницы я их тут поставил).

 
  1. /*
    
  2. * <DIV name=” nnmAjax_bookmarks ”> Прячем все, что находится внутри этих полей </DIV>
    
  3. */
    
  4. Function nnmAjaxReceive(response) {
    
  5. 	document.getElementById("nnmAjax_bookmarks ").innerHTML = “”;
    
  6.         //alert(response);
    
  7. }
    


Непосредственно сама веб страница – пользовательский интерфейс. Ничего тут особенного не меняется кроме того, что мы просто меняем ссылку на JavaScript код, который отслеживает событие onClick.

 
  1. /**
    
  2.  * NoName Webpage
    
  3.  * Старая страница
    
  4. **/
    
  5. 
    			
  6. <!- start old button ->
    
  7.      <a http://doci.nnm.ru/ajax/08.03.2006/ajax_na_noname_1_teoriya_/addme.html" 
    
  8.            title="Добавить в закладки">
    
  9.      <img src="http://www.nnm.ru/imagez/icons/addme.gif" 
    
  10.             alt="Добавить в закладки" 
    
  11.             style="vertical-align: middle;" border="0">
    
  12.      </a>
    
  13. <!- end old button ->
    


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

 
  1. /**
    
  2.  *  NoName Webpage
    
  3.  * Обновленная страница
    
  4. **/
    
  5. 
    			
  6. <!- start new button ->
    
  7.      <div name=”nnmAjax_bookmarks“>
    
  8.            <a href="#" onClick="nnmAjaxGet ()"
    
  9.                title="Добавить в закладки">
    
  10.                <img src="http://www.nnm.ru/imagez/icons/addme.gif" 
    
  11.                      alt="Добавить в закладки" 
    
  12.                      style="vertical-align: middle;" border="0">
    
  13.            </a>
    
  14.       </div>
    
  15. <!- end new button ->
    
  16. 
    			


Удачи в ваших веб творениях!



Рубрика: AJAX




Подгрузка через AJAX HTML-кода, содержащег....

AJAX

При разработке CMS S.Builder наша команда активно использовала AJAX. Теперь вот решили поделиться накопленным опытом. Начнем с этого хабратопика. Не буду здесь затрагивать различные фреймворки и библиотеки. Свой код всегда роднее. Для работы с AJAX-ом в S.Builder написана библиотека sbAJAX. Можете качать и пользоваться :). В этом файле есть функция sbEvalJS. Для тех, кто не знает, объясню. При подгрузке через AJAX и вставке на страницу HTML-кода, содержащего JavaScript, JavaScript выполняться не будет или полезут баги. Эта функция как раз решает поставленную задачу.


Подробнее... | Рубрика: AJAX | Добавлено: 19.11.2008

Обзор нового релиза самой мощной Ajax библ....

AJAX

Хотя наш обзор немного запоздал, оригинальный Dojo 1.2 вышел в релизной версии ещё 6-го октября, но сейчас мы наверстаем упущенное. И так, Dojo Toolkit — это самая мощная и гибкая ajax-библиотека из всех, что есть на рынке, она активно развивается и имеет большое комьюнити. Кстати, это самое комьюнити, совместно с компанией Sitepen, имеет ещё несколько проектов, среди которых и Cometd и некоторые другие, не менее интересные, о которых мы скоро вам расскажем. Сегодня же все внимание на флагманский продукт — Dojo 1.2.


Подробнее... | Рубрика: AJAX | Добавлено: 19.11.2008

Firebug 1.3 и 1.4 alpha — что нового и инт....

Вебмастеру

Если вы профессиональный веб-разработчик и постоянно имеете дело с разработкой и отладкой сложных AJAX приложений, то наверняка знаете и используете Firebug — плагин для браузера Firefox, предназначенный для отладки и исследования веб-приложений. Текущая его версия, 1.2х достаточно стабильная и функциональна, чтобы помочь в 99% проблем, которые могут возникнуть при разработке. Но и этот инструмент не лишён если не недостатков, то некоторых фич, которые могли бы облегчить работу. И даже идеальный инструмент можно сделать ещё более идеальным, как бы это не звучало.


Подробнее... | Рубрика: Вебмастеру | Добавлено: 19.11.2008

Остальные статьи:

Релиз Microsoft Silverlight 2.0. Что новог...
XML документация в C#
Курсоры в MySQL 5
Microsoft опубликовала подробности о сесси...
Microsoft делится подробностями о том, что...
Тестируем новый javascript от нового брауз...
MySQL Query Cache
Использование провайдеров компиляции в As...
Чего мы ждем от C# 4.0
Delphi 2009 и C++Builder 2009
Джоэл Спольски и Джеф Этвуд запустили новы...
Поиск кода Google /* что нового? */
10 jQuery скриптов для улучшения интерфейс...
Генераторы отчетов FastReport 4 и QuickRep...
День программиста — набор стерeотипов
Индусские програмисты
Вышел Django 1.0
Портативная версия Google Chrome Portable
Исходные коды .Net Frameword 3.5 SP1 для о...
Пишем правильный online WYSIWYG-редактор


Цитата дня (все,добавить):

Портал фрилансеров

работа на дому


    Рубрикатор

Программирование

C/С++
Обучение
Windows API
XAML
Моделирование
Паттерны
Visual Basic 7 .NET
WxWidgets
Функции WinApi
Функции С++
Разработка под Mac OS
Eiffel
Visual Studio 2008
UI дизайн
Алгоритмы
Конкурсные статьи
Turbo Pascal
Visual Studio
CASE-средства
Visual Studio 2005
Без VCL
Delphi
Тех. документация
Тестирование
Software Testing
ООП
TCP/IP
Google Android
Windows Installer
.NET Framework
Драйвера
C# C Sharp
Справка
Проектирование
Информ. системы
Visual Basic
Assembler
Оптимизация кода
Gtk+
Компоненты
Реинжиниринг
Управление проектами
Extreeme programming
Lotus Notes
Алгебраическое проектирование


Интернет технологии

PHP
Perl
ASP
WAP
Cookies
SSI
CGI
Web Servers
VB Script
DNS
CSS
XML
Html
Java Script
Java2ME
Firewall
Flash
.htaccess
Apache
VRML
Протоколы
Поисковые системы
Технология JAVA
Учебник по PHP
Учебник по JavaScript
Учебник по XML
Java Q&A
AJAX
DHTML
XHTML
Dreamweaver
Web 2.0
Python
Вебмастеру
Cisco
Ruby on Rails
Silverlight

Базы данных

Access
InterBase
MySQL
Oracle
ADO .NET
Основы SQL
Учебник по Access 2002
MS
Microsoft FoxPro
Доступ к данным
XML в MS SQL Server 2000
ODBC и MyODBC
Обучение
Caché
DB2
PostgresSQL
Sybase
Теория
Хранилища данных
Безопасность
Реляционные данные
MySQL и mSQL

Остальное:

Разное
Обзоры книг
Безопасность
Графика и дизайн
Юмор
Linux
Фракталы
Microsoft Axapta
Многоядерность
Сети
Microsoft Office
Работа
MS-DOS
Криптография
Графика и игроделание
Новости SDK
Системы защиты
Учебник по AutoCad
CVS
Windows XP
Windows Server 2003
Windows Vista
Windows 7
Мероприятия