Знакомство с AJAX для Front-End дизайнеров. Основы AJAX. Ajax как работает


javascript - Как работает AJAX?

Если вы совершенно не знакомы с AJAX (который обозначает асинхронный Javascript и XML), запись AJAX в википедии является хорошим началом точка:

Как и DHTML и LAMP, AJAX - это не технология сама по себе, а группа технологий. AJAX использует комбинацию:

  • HTML и CSS для разметки и информация о стиле.
  • DOM доступ с помощью JavaScript для динамически отображать и взаимодействовать с представленная информация.
  • Метод для обмена данными асинхронно между браузером и сервером, тем самым избегая перезагрузки страниц. Объект XMLHttpRequest (XHR) обычно используется, но иногда объект IFrame или динамически добавленный тег используется вместо этого.
  • Формат данных отправлено в браузер. Общие форматы включая XML, предварительно отформатированный HTML, простой текст и обозначение объекта JavaScript (JSON). Эти данные могут быть созданы динамически в той или иной форме серверные скрипты.

Как вы можете видеть, с чистой технологической точки зрения здесь нет ничего нового. Большинство частей AJAX уже были там в 1994 году (1999 для объекта XMLHttpRequest). Настоящая новинка заключалась в том, чтобы использовать эти части вместе, как Google с GMail (2004) и Google Maps (2005). Фактически, оба сайта внесли большой вклад в продвижение AJAX.

Изображение, стоимость которого составляет тысячу слов, ниже диаграммы, которая иллюстрирует связь между клиентом и удаленным сервером, а также различия между классическим и приложениями с поддержкой AJAX:

alt text

Для оранжевой части вы можете делать все вручную (с помощью объекта XMLHttpRequest), или вы можете использовать известные библиотеки JavaScript, такие как jQuery, Prototype, YUI и т.д. на "AJAXify" клиентскую сторону вашего приложения. Такие библиотеки стремятся скрыть сложность разработки JavaScript (например, кросс-браузерную совместимость), но могут быть излишними для простой функции.

На стороне сервера могут помочь некоторые фреймворки (например, DWR или RAJAX, если вы используете Java), но все, что вам нужно сделать, это в основном открыть службу, которая возвращает только требуемую информацию для частичного обновления страницы (сначала как XML/XHTML - X в AJAX - но JSON часто предпочтительнее в наши дни).

qaru.site

Как работает AJAX? Engine.JS

Если вы совершенно новичок в AJAX (который обозначает асинхронный Javascript и XML), запись AJAX в wikipedia является хорошей отправной точкой:

Как и DHTML и LAMP, AJAX – это не технология сама по себе, а группа технологий. AJAX использует комбинацию:

  • HTML и CSS для маркировки и стилизации информации.
  • DOM обратился к JavaScript, чтобы динамически отображать и взаимодействовать с представленной информацией.
  • Способ обмена данными асинхронно между браузером и сервером, что позволяет избежать перезагрузки страниц. Обычно используется объект XMLHttpRequest (XHR), но иногда вместо него используется объект IFrame или динамически добавленный тег.
  • Формат данных, отправленных в браузер. Общие форматы включают XML, предварительно форматированный HTML, обычный текст и JavaScript Object Notation (JSON). Эти данные могут быть созданы динамически с помощью некоторых форм серверных скриптов.

Как вы можете видеть, с чистой технологической точки зрения здесь нет ничего нового. Большинство частей AJAX были уже там в 1994 году (1999 для объекта XMLHttpRequest ). Настоящая новинка заключалась в том, чтобы использовать эти части вместе, как Google с GMail (2004) и Google Maps (2005). Фактически, оба сайта в значительной степени способствовали продвижению AJAX.

Картинка стоит тысячи слов, ниже диаграммы, которая иллюстрирует связь между клиентом и удаленным сервером, а также различия между классическими и приложениями AJAX:

Alt text

Для оранжевой части вы можете делать все вручную (с объектом XMLHttpRequest ), или вы можете использовать известные JavaScript-библиотеки, такие как jQuery , Prototype , YUI и т. Д. Для «AJAXify» на стороне клиента. Такие библиотеки направлены на то, чтобы скрыть сложность разработки JavaScript (например, кросс-браузерную совместимость), но может быть излишним для простой функции.

На стороне сервера могут также помочь некоторые фреймворки (например, DWR или RAJAX, если вы используете Java), но все, что вам нужно сделать, это в основном открыть службу, которая возвращает только требуемую информацию для частичного обновления страницы (сначала как XML / XHTML – X в AJAX – но JSON часто предпочтительнее в наши дни).

ru.javascriptes.com

Знакомство с Ajax. Основы Ajax

Знакомство с AJAX для Front-End дизайнеров. Основы AJAX

От автора: данная серия статей призвана познакомить front-end дизайнеров и начинающих разработчиков с технологией AJAX, основной front-end технологией. В первом уроке мы затронем основы AJAX, начнем узнавать различные детали данной технологии, узнаем, что это такое, как работает и какие есть ограничения.

Приступим! Обратите внимание: предполагается, что вы уже знаете базовые front-end технологии, такие как HTML и CSS.

Что такое AJAX?

AJAX расшифровывается как «Асинхронный JavaScript и XML». Под AJAX понимается не одна технология, и она не является новой. На самом деле это группа технологий (HTML, CSS, Javascript, XML, и т.д.), которые связываются вместе для создания современных веб-приложений.

С помощью AJAX клиент (браузер) общается с сервером и запрашивает у него данные. Полученный ответ обрабатывается, и в станицу вносятся изменения без полной ее перезагрузки. Разберем аббревиатуру AJAX:

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

Современные тенденции и подходы в веб-разработке

Узнайте алгоритм быстрого профессионального роста с нуля в сайтостроении

Узнать подробнее

«JavaScript» это язык программирования, который используется для создания объекта запроса AJAX, парсинга этого ответа и обновления DOM страницы.

Для отправки запроса на сервер клиент использует XMLHttpRequest или XHR API. API (программный интерфейс) это набор методов, которые задают правила общения между двумя заинтересованными сторонами. Тем не менее, приходящие из AJAX запроса данные могут быть в любом формате, а не только в XML.

Как работает AJAX

Чтобы понять основной принцип работы, давайте взглянем на картинку ниже:

На картинке описан стандартный AJAX сценарий:

Пользователь хочет увидеть больше статей, и он или она кликает на нужную кнопку. Данное событие запускает вызов AJAX.

Запрос посылается на сервер. С запросом можно передать различные данные. Запрос может посылаться в статический файл (к примеру, example.php), хранящийся на сервере. Также можно выполнять динамические скрипты (functions.php), на каждом этапе которых будет происходить общение с базой данных (или другой системой) для извлечения необходимой информации.

База данных отсылает обратно запрошенные статьи на сервер. А сервер посылает их в браузер.

JavaScript парсит ответ и обновляет часть DOM (структура страницы). В нашем примере обновится только сайдбар. Остальные части страницы не меняются.

Помня это, вы поймете, почему AJAX настолько важная технология в современном интернете. Разрабатывая приложения под управлением AJAX мы можем контролировать большие объемы данных, загружаемых с сервера.

Живой пример на AJAX

AJAX сейчас уже повсюду. Чтобы убедить вас в этом мы коротко рассмотрим несколько популярных сайтов, которые вовсю используют данную технологию.

Сперва рассмотрим принципы работы Facebook и Twitter. При прокрутке страницы вниз AJAX подгружает новый контент. Также если вы ставите лайк или дизлайк вопросам и ответам на Stack Overflow, опять же срабатывает AJAX. Как только вы вбиваете в строку поиска что-то в Google или Youtube, срабатывают множественные запросы AJAX.

Более того, если мы захотим, то сможем отслеживать данные запросы. К примеру, в консоли Chrome это можно сделать, кликнув правой кнопкой мыши и активировав функцию Log XMLHttpRequests.

Как создать запрос

Выше мы уже говорили, что для создания запроса используется XMLHttpRequest API. Кроме того в jQuery, самой популярной JS библиотеке есть различные Ajax функции и методы. В серии статей мы рассмотрим различные примеры на чистом JS и JQuery для отправки запросов на сервер.

Управление запросами

Вытаскиваемые данные с сервера могут храниться в различных форматах. XML, JSON, JSONP, обычный текст и HTML.

Современные тенденции и подходы в веб-разработке

Узнайте алгоритм быстрого профессионального роста с нуля в сайтостроении

Узнать подробнее
XML

XML (Расширяемый язык разметки) – один из самых популярных форматов для обмена данными между приложениями. Формат похож на HTML, и в качестве структуры используются теги. Однако в XML нет готовых тегов, мы сами задаем их. Пример структуры ниже:

<person> <name>Mike</name> <surname>Mathew</surname> <nationality>Australian</nationality> <languages> <language>English</language> <language>Spanish</language> <language>French</language> <language>Russian</language> </languages> </person>

<person>

    <name>Mike</name>

    <surname>Mathew</surname>

    <nationality>Australian</nationality>

    <languages>

        <language>English</language>

        <language>Spanish</language>

        <language>French</language>

        <language>Russian</language>

    </languages>

</person>

В сети полно онлайн редакторов, с помощью которых можно создавать XML документы. Мой любимый это: XMLGrid.net. В этом редакторе наш пример выглядит так:

JSON

JSON (JavaScript Object Notation) – еще один популярный формат обмена данными. В JSON пример сверху будет выглядеть так:

{ "name" : "Mike", "surname" : "Mathew", "nationality" : "Australian", "languages" : ["English", "Spanish", "French", "Russian"] }

{

  "name"        : "Mike",

  "surname"     : "Mathew",

  "nationality" : "Australian",

  "languages"   : ["English", "Spanish", "French", "Russian"]

}

В сети также полно онлайн JSON редакторов. Мне нравятся два редактора: JSON Generator, JSON Editor Online

В JSN редакторе наш пример будет выглядеть так:

Ограничения в AJAX запросах

Перед тем, как начать использовать AJAX, необходимо узнать про ограничения. Мы рассмотрим только две проблемы.Первая – ошибка в консоли Chrome:

Ошибка появляется, когда запрос ссылается на локальный файл. В этом примере мы хотели получить доступ к данным из локального файла (Demo.json), который хранится не на сервере. Для устранения данной проблемы можно установить локальный сервер и хранить файлы там. Вторая проблема:

Ошибка появляется, когда данные из запроса хранятся на другом домене относительно нашей страницы (ошибка известна как правило ограничения домена). В нашем примере данные хранятся на локальном сервере, а страница хранится на сервере Codepen. К счастью, данные ошибки устранимы.

Один из способов это CORS от W3C. Но данный механизм требует внести изменения в конфигурацию файлов на сервере. К примеру, на данной странице описано, как настроить Apache сервер. Другой способ это JSONP (JSON с набивкой).

Заключение

Данный обзор дал вам представление о том, что такое AJAX, где вы уже с ним могли сталкиваться, а также какие существуют потенциальные проблемы. Также мы рассмотрели самые популярные форматы обмена данными. В следующей статье мы рассмотрим работающий пример. Увидимся!

Автор: George Martsoukos

Источник: http://webdesign.tutsplus.com/

Редакция: Команда webformyself.

Современные тенденции и подходы в веб-разработке

Узнайте алгоритм быстрого профессионального роста с нуля в сайтостроении

Узнать подробнее

Создание зависимых списков средствами AJAX

Прямо сейчас посмотрите курс по созданию зависимых списков средствами AJAX!

Смотреть курс

webformyself.com

Javascript - Как работает AJAX?

Если вы совершенно не знакомы с AJAX (который обозначает асинхронный Javascript и XML), запись AJAX в википедии является хорошей отправной точкой:

Как и DHTML и LAMP, AJAX - это не технология сама по себе, а группа технологий. AJAX использует комбинацию:

  • HTML и CSS для разметки и стилизации информации.
  • DOM обратился к JavaScript, чтобы динамически отображать и взаимодействовать с представленной информацией.
  • Способ обмена данными асинхронно между браузером и сервером, что позволяет избежать перезагрузки страниц. Обычно используется объект XMLHttpRequest (XHR), но иногда вместо него используется объект IFrame или динамически добавленный тег.
  • Формат данных, отправленных в браузер. Общие форматы включают XML, предварительно форматированный HTML, обычный текст и JavaScript Object Notation (JSON). Эти данные могут быть созданы динамически с помощью некоторых форм серверных скриптов.

Как вы можете видеть, с чистой технологической точки зрения здесь нет ничего нового. Большинство частей AJAX были уже там в 1994 году (1999 для объекта XMLHttpRequest ). Настоящая новинка заключалась в том, чтобы использовать эти части вместе, как Google с GMail (2004) и Google Maps (2005). Фактически, оба сайта в значительной степени способствовали продвижению AJAX.

Картинка стоит тысячи слов, ниже диаграммы, которая иллюстрирует связь между клиентом и удаленным сервером, а также различия между классическими и приложениями AJAX:

Для оранжевой части вы можете делать все вручную (с объектом XMLHttpRequest ), или вы можете использовать известные библиотеки JavaScript, такие как jQuery , Prototype , YUI и т. Д. Для «AJAXify» на стороне клиента. Такие библиотеки направлены на то, чтобы скрыть сложность разработки JavaScript (например, кросс-браузерную совместимость), но может быть излишним для простой функции.

На стороне сервера могут также помочь некоторые фреймворки (например, DWR или RAJAX если вы используете Java), но все, что вам нужно сделать, это в основном открыть службу, которая возвращает только требуемую информацию для частичного обновления страницы (сначала как XML / XHTML - X в AJAX - но JSON часто предпочтительнее в наши дни).

Суть AJAX заключается в следующем:

Ваши страницы могут просматривать веб-страницы и обновлять свой собственный контент, пока пользователь делает другие вещи .

То есть ваш javascript может отправлять асинхронные запросы GET и POST (обычно через объект XMLHttpRequest ), а затем использовать результаты этих запросов для изменения своей страницы (с помощью манипуляции с объектной моделью документа ).

AJAX означает асинхронный Javascript и XML. AJAX поддерживает частичное обновление страниц без необходимости отправлять всю страницу обратно на сервер.

Есть много вариантов для AJAX. Двумя наиболее заметными (возможно) являются ASP.NET AJAX от Microsoft (ранее Atlas) и jQuery.

ASP.NET AJAX относительно легко настроить, если вы уже знакомы с ASP.NET. jQuery хорош, если вы уже знаете javascript и очень тщательно контролируете запрос и обновление своей страницы.

НТН

code-examples.net

Ajax — что это? Асинхронный JavaScript и XML: преимущества и недостатки

Асинхронный JavaScript и XMLСегодня  можно наблюдать за тем, как в интернете набирает популярность использование современных технологий. Одной из таких технологий является AJAX. Что она собой представляет? Каковы ее характеристики? Где может быть использована данная технология? На эти и многие другие вопросы вы сможете найти ответы в рамках данного обзора.

AJAX: общая информация

Как расшифровывается комбинация AJAX? Что она означает? Данное сокращение представляет собой аббревиатуру. Расшифровывается она как «Asynchronous Javascript and XML». Часто в интернете можно найти информацию о том, что данная технология является новой. Однако на самом деле это не совсем так. Дело в том, что XML иJ avascript существуют уже довольно продолжительное время. AJAX является своеобразным синтезом данных технологий. Обычно он используется вместе с термином Web 2.0. AJAX подразумевает под собой использование передовых методов разработки. В чем же состоит особенность данной технологии?

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

AJAX: преимущества технологии

Технология AJAX предлагает два способа, при помощи которых может быть реализована веб-страница. Первый способ предусматривает внесение изменений без необходимости перезагрузки. Осуществить это можно при помощи динамических обращений к серверу. Второй способ подразумевает использование отдельных технологий. Наиболее популярной из них является технология XMLHttpRequest. Что касается самих преимуществ технологии AJAX, то относительно ее можно сказать следующее: вы можете создать удобное веб-приложение, интерфейс которого будет иметь целый ряд приятных для пользователя возможностей, в итоге это может облегчить взаимодействие пользователя и сайта. Таким образом, вместо полной перезагрузки страницы происходит только частичная. Благодаря этому можно оптимизировать уровень быстродействия и экономить ресурсы машины. Серверная часть сайта может активно взаимодействовать с пользователем. Также данную технологию удобно использовать для реализации целого ряда задумок.

Обмен информацией

Предположим, вам нужна форма обратной связи, при помощи которой вы сможете осуществлять консультирование клиента. Каким образом это можно сделать? Прежде всего, необходимо позаботиться о самом «носителе» информации. Для этого требуется создать объект XML Http Request.Данный объект будет выступать в роли посредника между сервером и браузером. При помощи данного объекта будут направляться запросы, а также получаться ответы на них. AJAX PHP нам нужен для непосредственного обмена данными. Этот инструмент может быть использован при помощи GET и POST запросов. В данном случае все необходимые аргументы будут передаваться непосредственно через URL. Вместе с тем одновременно будет запущена функция, которая следит за тем, чтобы передача информации не прерывалась. А вот какой запрос AJAX реализовать? Рекомендуется использовать POST. Благодаря данному AJAX-запросу можно передавать неограниченное количество информации, к которым будет значительно сложнее получить доступ.

AJAX: принцип работы

Как на практике работает асинхронный Javascript и XML? Давайте попробуем разобраться с данным вопросом на конкретном примере. Что касается структуры постройки, то необходимо позаботиться о том, чтобы клиентская часть обеспечивала весь необходимый функционал для обмена данными. Она должна предоставлять все необходимые методы для передачи информации всеми выбранными способами. Серверная часть должна обеспечивать обработку полученной информации. Основываясь на полученных данных, она должна генерировать новую информацию, чтобы затем передать ее клиенту. Наиболее распространенным взаимодействием данного типа является работа с базами данных. Ранее уже упоминалось о таком элементе бизнес-сайтов, как форма обратной связи. В данном случае преимуществом AJAX будет то, что он осуществляет асинхронную передачу информации. Иначе говоря, пока информация пересылается, пользователь может совершать все действия, которые ему необходимы. Ориентируясь на специфику каждого конкретного случая пользователю необходимо решить, нужно ли информировать посетителя сайта об этом процессе. Что же касается самой формы обратной связи, то тут стоит отметить, что  в данном случае можно написать фразу вроде «оператор набирает ответное сообщение», или нечто подобное.

AJAX: ответ сервера

Ответ сервера может приходить не только благодаря использованию технологии XML, как можно подумать. Он также может передаваться как JSON или обычный текст. Полученную информацию в первом случае можно сразу же выводить на страницу. Если же вы используете XML, то нужно будет позаботиться о том, чтобы файл AJAX должным образом был обработан в браузере клиента. В этом случае все данные преобразовываются к (X) HTML.При использовании формата JSON необходимо выполнить полученный код для того, чтобы получить полноценный Javascript объект. При этом нужно проявлять особую осторожность. Также необходимо учитывать, что многие злоумышленники любят посредством данной технологии передавать вредоносный код. По этой причине необходимо предусмотреть процедуру проверки полученной информации перед обработкой. Особенности реализации этого процесса для разных браузеров могут происходить по-разному, однако в целом схема взаимодействия будет одной и той же.

Запрос к серверу и обработка ответа

Последовательность действий в данном случае будет следующей. Первоначально необходимо создать запрос и убедиться в том, что XML Http Request существует. После этого инициализируется соединение с сервером. К нему нужно направить запрос. Теперь необходимо дождаться, когда придут данные и обработать их. Необходимо сказать о некоторых особенностях, которые касаются создания объекта. Он может быть инициирован в любом месте, где это возможно в рамках программирования. Если присвоить ему статус глобального, то в один прекрасный момент, для него будет возможна работа только с одним запросом. Необходимо уделить пристальное внимание данному моменту. Относительно обработки стоит сказать, что тут необходимо ориентироваться по выбранному инструменту. При XML данные нужно обработать при помощи функций DOM, а пользователю конечный результат предоставить уже в HTML. Но что же делать с JSON? Необходимо понимать, что он является объектной нотацией Javascript. Это означает, что благодаря JSON объект можно представлять как строку. Однако при этом необходимо учитывать, что данный способ не является в полной мере безопасным. Нужно учитывать одновременно множество различных факторов. Но в целом такой метод можно считать довольно легким.

Серверные языки программирования

Любые веб-приложения в той или иной степени используют серверные языки программирования. Наиболее популярным языком программирования для передачи данных является PHP. Обычно на нем пишут файлы для сайтов, где скорость передачи информации не является критически важным параметром. Для таких сайтов предпочтение отдается балансу между скоростью и надежностью. Выше рассматривались методы передачи XML Http Request.

Настройка сервера

Какие программы необходимо использовать для того, чтобы AJAX работал полноценно?Что это даст нам? Для чего они необходимы? Чтобы получить ответы на все эти вопросы, необходимо ознакомится со следующим списком:

— HTML/XHTML: необходимы для того, чтобы сервер распознал разметку страницы;

— CSS: данный инструмент необходим для визуального подбора оформления страницы;

— DOM: необходим для обеспечения динамических изменений на странице как ответ на действия пользователя;

— XML: требуется для пересылки данных между сервером и клиентом;

— JavaScript: требуется для создания движка AJAX и обеспечения интерактивности;

— XML Http Request: представляет собой объект, посредством которого запросы будут пересылаться к серверу.

Использование на сайте

Теперь у вас имеются теоретические знания и представления о работе AJAX. Отправка данных сейчас потребует определенной практической подготовки. Давайте в целом посмотрим, как можно подойти к реализации поставленной задачи при использовании AJAX. Прежде всего, нам необходимо создать базу данных драйверов. Они будут отличаться в зависимости от устройств, на которых могут работать. Необходимо отметить, что рассматриваемая нами база данных довольно большая, поэтому нет смысла просто пересылать ее клиенту и предлагать ему сделать выборку при помощи JavaScript. Нежелательно также, чтобы сама веб-страница загружалась только из-за одного параметра. Запросы на сервере будут обрабатывать специальные скрипты PHP. База данных реализована в виде файла XML.

О базе данных

Необходимо проработать структуру базы данных. Что делать, если передаваемые параметры не являются объектами. В данном случае необходимо предусмотреть создание переменной, где будут находиться ссылка на него, на случай вызова со стороны функции. Чтобы иметь возможность обратиться к ней из любого места кода, необходимо сделать ее глобальной. Желательно для удобства использовать систему управления базами данных. Это, конечно, не обязательно. Однако использование системы управления базами данных позволит вам более удобно и эффективно работать с данными.

Работа движка

Как все будет происходить? Наступает определенное событие, которое будет вызывать особенную функцию. Данная функция подготовит данные GET и POST, которые будут пересылаться. После этого вызывается функция, которая сделает обращение к URL серверного скрипта. В ней необходимо предусмотреть создание XML Http Request-объекта. Следует хранить ссылку на него в переменной. После того, как эти данные были отправлены серверу, необходимо дождаться от него ответа. Для этого можно включить «прослушку» до получения данных (если вам известно, что и когда должно прийти) или предусмотреть функцию, которая всегда будет готова принять данные. Первый вариант отличается меньшей степенью надежности в случае возникновения внештатных ситуаций. Второй вариант более затратный с точки зрения ресурсов. Если это делается только относительно одной переменной, то это не скажется на быстром интернете. Но если таких переменных сотни и тысячи и их общий объем будет слишком велик, то тогда уже другое дело. Необходимо будет найти баланс между использованием имеющихся ресурсов и результативностью. Необходимо понимать, что не у всех есть оперативная память объемом 16 Гб. Для этого может быть установлено определенное время ожидания, после которого поставляются предыдущие данные, а также информация о том, что сервер в данный момент времени недоступен.

AJAX: особенности

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

bezwindowsa.ru

что это? Асинхронный JavaScript и XML: преимущества и недостатки

Сейчас можно наблюдать, что в интернете приобретает популярность использование и применение новых технологий. Одна их них – это AJAX. Что это такое? Какими характеристиками она обладает? Где применяется? На все эти вопросы можно будет найти ответ в рамках данной статьи.

Общая информация

ajax что этоКак расшифровывается AJAX? Что это значит? Данное сокращение является аббревиатурой. Она расшифровывается как Asynchronous Javascript and XML ("Асинхронный Яваскрипт и ИКСМЛ"). Часто можно увидеть или услышать информацию, что это новая технология. Но это не совсем так. Дело в том, что Javascript и XML существуют уже довольно длительное время, тогда как "Аякс" является синтезом этих технологий. Чаще всего он используется вместе с термином Web 2.0 и подразумевается как использование передовых методов разработки.

А чем особенность?

Итак, мы уже имеем общее представление о том, чем является AJAX. Что это даёт нам на практике? Почему ведутся активные разговоры о его применении? Особенность данной технологии - в том, что при её использовании не нужно обновлять всю страницу при первой же потребности. Ведь можно запросить новые данные только для её части. Это и удобно (ведь меньше времени приходится ждать), и экономично (для тех, у кого не безлимитный интернет). Правда, для информирования пользователя о происходящем обновлении желательно использовать хотя бы индикатор загрузки или текстовые сообщения, которые проинформируют про новые данные с сервера. В качестве минусов технологии часто упоминают тот факт, что она не поддерживается устаревшими и текстовыми браузерами. Да и возможность отключения технологии Javascript есть у пользователя, чем многие и пользуются. Поэтому не следует злоупотреблять AJAX. Что это может дать, если не предусмотреть альтернативные методы представления информации? В лучшем случае информация просто не будет отображена на сайте. В худшем – его внешний вид так пострадает, что пользователь на него больше не вернётся.

Преимущества "Аякса"

веб приложениеДанная технология предлагает два метода, по которым может быть реализована веб-страница. Первый предусматривает внесение изменений без перезагрузки. Это может быть осуществлено с помощью динамических обращений к серверу. Второй предусматривает использование отдельных технологий, наиболее популярной из которых является XMLHttpRequest. Относительно самих преимуществ "Аякса" можно сказать следующее:

  1. Можно создавать удобное веб-приложение, в котором интерфейс будет иметь целых ряд приятных для пользователя возможностей, что в итоге облегчит взаимодействие человека и сайта.
  2. Вместо полной перезагрузки страницы происходит частичная. Благодаря этому экономятся ресурсы машины и оптимизируется быстродействие.
  3. Серверная часть сайта активно взаимодействует с пользователем.
  4. Удобно использовать для реализации целого ряда задумок.

Обмен данными

Вот, допустим, нужна форма обратной связи, с помощью которой можно будет проконсультировать клиентов. Как её можно сделать? Для начала необходимо позаботится о «носителе» информации. Для этого необходимо создать объект XMLHttpRequest. Он выступает в роли посредника между сервером и браузером пользователя. С помощью этого объекта будут отправляться запросы, а также получаться ответы на них. Для непосредственного обмена данными нам нужен AJAX PHP. Этот инструментарий может быть реализован с помощью GET- или POST-запросов. В таком случае необходимые аргументы будут передаваться непосредственно через URL. Одновременно будет запущена функция, следящая за тем, чтобы передача данных не прерывалась. Но какой AJAX-запрос реализовать? Рекомендуют использовать POST. Благодаря ему можно передавать неограниченное количество данных, к которым, к тому же значительно сложней получить доступ.

Принцип работы

веб страницаКак же функционирует асинхронный Javascript и XML на практике? Давайте разберёмся с этим на примере. Относительно структуры постройки необходимо позаботиться о том, чтобы клиентская часть обеспечивала весь нужный функционал для безопасного обмена данными. Она должна предоставлять необходимые методы для передачи информации выбранными способами. Серверная же часть должна обеспечивать обработку полученных данных, и, уже основываясь на них, генерировать новую информацию, чтобы в последующем передать её к клиенту. Самым распространённым взаимодействием данного типа является работа с базой данных. Ранее мы уже упомянули такой элемент многих бизнес-сайтов, как форма обратной связи. Преимуществом "Аякса" в данном случае будет то, что он проводит асинхронную передачу данных. Иными словами, пока информация пересылается, пользователь может совершать все необходимые ему действия. Ориентируясь на специфику каждого конкретного случая, необходимо решить, нужно ли об этом процессе информировать посетителя сайта. Относительно той же формы обратной связи следует сказать, что в данном случае можно написать «оператор набирает ответ», или нечто подобное.

Ответ сервера

Он может приходить не только благодаря XML, как это можно подумать из-за названия технологии. Кроме этого, он может передаваться как обычный текст или JSON. В первом случае полученную информацию можно сразу же выводить на страницу. Если же используется XML, то необходимо позаботиться о том, чтобы AJAX-файл был должным образом обработан в браузере клиента. Все данные в этом случае преобразовываются к (X)HTML. Когда же используется формат JSON, необходимо выполнить полученный код, чтобы получить полноценный объект Javascript. При этом необходимо проявить осторожность и учитывать тот факт, что многие злоумышленники любят передавать посредством этой технологии вредоносный код. Поэтому необходимо предусмотреть процедуру проверки полученных данных перед их обработкой. Особенности реализации для разных браузеров могут немного разниться, но, в целом, схема действия тут одна.

Делаем запрос к серверу и обработку ответа

форма обратной связиВся последовательность действий будет выглядеть следующим образом:

  1. Первоначально необходимо создать и удостовериться в том, что существует XMLHttpRequest.
  2. Затем инициализируется соединение с сервером.
  3. Посылаем к нему запрос.
  4. Дожидаемся, пока придут данные, и обрабатываем их.

Следует рассказать о некоторых особенностях относительно создания объекта. Он может быть инициирован в любом месте, где это только возможно в рамках языка программирования. Но если ему присвоить статус глобального, то в какой-то один момент времени для него будет возможной только работа с одним запросом. Этому моменту необходимо уделить пристальное внимание. Относительно обработки – здесь ориентируемся по выбранному инструменту. Так, при XML данные необходимо обработать DOM-функциями и представить пользователю уже конечный результат в HTML. А что же делать с JSON-ном? Следует понимать, что он является объектной нотацией Javascript. Что это значит? Благодаря JSON можно представлять объект как строку. Но при этом необходимо помнить, что данный способ не является безопасным в полной мере, и необходимо будет учитывать кучу факторов. Но, в целом, он является весьма легким.

Серверные языки программирования

Практически любое веб-приложение использует их в той или иной мере. Для передачи данных наиболее популярным является PHP. На нём обычно пишут файлы для сайтов, где не является критически важным скорость передачи информации, а отдается предпочтение балансу между нею и надёжностью. Методы передачи XMLHttpRequest рассматривались выше.

Настраиваем сервер

asynchronous javascript and xmlКакие программы необходимы для того, чтобы полноценно работал AJAX? Что это нам даст? Для чего они нужны? Чтобы получить ответы на эти вопросы, следует ознакомиться со следующим списком:

  1. HTML/XHTML. Они нужны для того, чтобы сервер распознавал разметку страницы.
  2. CSS. Этот инструмент необходим для визуального подбора оформления страницы.
  3. DOM. Он нужен для того, чтобы обеспечивать динамические изменения на странице как ответ на действие со стороны пользователя.
  4. XML. Необходим для пересылки данных между клиентом и сервером.
  5. JavaScript. Нужен для создания движка "Аякса" и обеспечения интерактивности.
  6. XMLHttpRequest. Объект, посредством которого будут пересылаться запросы к серверу.

Использование на сайте

Итак, сейчас у нас есть и теоретические знания, и представления о том, как работает AJAX. Отправка данных сейчас требует только определённой практики. Давайте же в целом посмотрим, как можно подходить к реализации поставленной задачи с использованием "Аякса". Итак, нам необходимо создать базу данных драйверов. Причем разниться они будут по устройствам, на которых могут работать. Следует отметить, что рассматриваемая база данных очень большая, поэтому просто пересылать её клиенту и уже ему предлагать делать выборку с помощью JavaScript нет смысла. Также нежелательно, чтобы сама веб-страница перезагружалась из-за одного параметра. На сервере запросы будут обрабатывать специальные скрипты РНР. БД реализована в виде XML-файла.

О базе данных

ajax отправкаНеобходимо проработать её структуру. А что делать, если передаются параметры, которые являются объектами? В таком случае необходимо предусмотреть создание переменной, где будет находиться ссылка не него, на случай вызова со стороны функции. Для возможности обращения к ней из любого места кода её нужно сделать глобальной. Для удобства желательно использовать систему управления базами данных. Конечно, это не обязательно. Но всё же использование СУБД позволит работать с данными более удобно и эффективно.

Прорабатываем работу движка

Как же всё будет происходить? Итак, наступает определённое событие, которое будет вызывать особенную функцию. Она подготовит GET или POST-данные, которые будут пересылаться. Затем вызывается функция, которая сделает обращение к URL серверного скрипта. В ней необходимо предусмотреть создание XMLHttpRequest-объекта. Ссылку на него следует хранить в переменной. После того как данные были отправлены серверу, необходимо ждать от него ответа. Для этого можно включить «прослушку» до получения информации (если известно, что придёт и когда) или предусмотреть функцию, которая будет всегда готова принять данные. Первый вариант менее надёжен в случае возникновения внештатной ситуации. Вторая же реализация - более затратная с точки зрения ресурсов. Хотя, если это делается только относительно одной переменной, на быстром интернете это не скажется. Но если их сотни и тысячи, и они будут иметь большой размер, – тогда это будет другое дело. Поэтому необходимо искать баланс между пользованием имеющимися ресурсами и результативностью. Ведь следует понимать, что не все обладают оперативной памятью на 16 Гб. Для этого может устанавливаться определённое время ожидания, после которого подставляются предыдущие данные или информация о том, что сервер недоступен в данный момент времени.

Особенности

ajax файлКогда с помощью "Аякса" создаётся интерфейс для страницы или приложения, то необходимо позаботиться о том, чтобы полученный результат хорошо работал как на разных операционных системах, так и на различных браузерах. В первом случае неоценимую помощь смогут оказать эмуляторы. Во втором случае достаточно будет просто установить различные программы и на них проверить работоспособность кода. Также необходимо предусмотреть определённые действия и на случай, если используемые пользователем браузеры будут устаревшими или он отключит необходимые настройки. В таких случаях следует позаботиться о выводе на страницу текста, в котором указана причина того, почему просмотр сайта в данном случае не является возможным. Да, сейчас подавляющее большинство людей использует современную технику, но не стоит полностью выпускать из внимания вероятность и того, что несколько процентов посетителей будут использовать несколько устаревшее программное обеспечение. А в масштабах бизнеса это может иметь значительные последствия.

Заключение

Вот и подходит к логическому окончанию эта статья. Если говорить про "Аякс" в целом, то этот инструмент позволяет создавать очень привлекательные и многофункциональные сайты, которые быстро работают и при грамотной верстке доставляют своим пользователям одно удовольствие. Можно не сомневаться, что в будущем появятся ещё более совершенные технологии, но пока будем использовать то, что у нас есть. По мере усовершенствования языков программирования и их методов вполне возможным является и такой вариант, что станут доступными способы реализации, которые позволят создавать ещё более качественный продукт. Но как бы там ни было, работать нужно сейчас с тем, что есть. И имя этому – "Аякс".

fb.ru

SEO + AJAX: как им ужиться?

Почему это важно

Сегодня в сети все чаще можно встретить не только отдельные страницы, свёрстанные при помощи технологии AJAX, но и целые сайты, использующие этот способ вывода контента. Это продиктовано тем, что AJAX набрал большую популярность среди web-разработчиков как более современный и совершенный путь решения сложных задач динамического вывода контента и его визуализации.

Однако, несмотря на свою прогрессивность, данная технология весьма нелюбима в профессиональной среде SEO-специалистов из-за ряда особенностей, о которых мы поговорим ниже. Хотим не просто обозначить те проблемы, которые могут возникнуть у AJAX-сайтов в контексте продвижения, но и расскажем о поиске компромиссных путей их решения.

Причины популярности технологии AJAX среди разработчиков

Одной из основных тенденций в разработке юзер-ориентированых сайтов, является их физическое ускорение. Во внимание берётся всё: время загрузки страницы, элементов на ней, скорость реакции на взаимодействие, совершаемое пользователем. При этом любая технология, которая позволяет качественно ускорить любую из составляющих сайта или отдельных его страниц, сразу после появления взлетает на пик популярности у веб-разработчиков. Это объясняется весьма просто: умея создавать более быстрые и удобные для пользователей сайты, вы получаете преимущество перед конкурентами.

AJAX как раз и является одной из технологий, внедрение которой можно назвать прорывом в сайтостроении. Ключевая особенность AJAX в том, что он позволяет сделать интерфейсы сайта асинхронными, т.е. уйти от классической модели работы «запрос – ответ – запрос», когда браузер не может выполнять никаких операций, пока не получит ответ от сервера. В итоге пользователь вынужден ждать пока «прогрузится» интерфейс.

AJAX же позволяет динамически изменять содержание страницы без полной перезагрузки, т.е. пользователю нет необходимости ждать, пока сайт «замер» в ожидании ответа от сервера. Простой пример прикладного использования: вы пишете письмо или текстовое сообщение какому-нибудь пользователю и хотите прикрепить к нему фото, картинку или видеоролик. Процесс загрузки ролика, как правило, не очень быстрый и в обычной ситуации вам пришлось бы ждать, пока он завершится, чтобы продолжить писать. С технологией AJAX вы можете параллельно набирать текст, не дожидаясь окончания загрузки. Удобно? Безусловно. И это лишь маленький бытовой пример, в то время как специалист по юзабилити сможет привести таких примеров сотни. Все эти факторы и обусловили то, что AJAX стал востребован и популярен как у разработчиков, так и у рядовых пользователей.

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

Плюсы и минусы использования AJAX для формирования страниц

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

Плюсы использования:

  • Экономичность. Ввиду того, что при запросе AJAX-страницы серверу нет необходимости заново «перегружать» весь контент и повторно генерировать всю страницу, а только часть ее (ту, которая изменяется/подгружается AJAX-скриптом), происходит значительная экономия web-трафика и снижается количество запросов-обращений на сервер.
  • Снижение серверной нагрузки. Данное преимущество вытекает из первого, когда за счет снижения количества запросов, посылаемых на сервер, снижается и нагрузка. Это особенно актуально на крупных сайтах, где количество генерируемых запросов пользователями может стать серьезной проблемой, ставящей под угрозу работоспособность.
  • Ускорение загрузки страницы. Отсутствие необходимости в перезагрузке страницы, позволяет добиться того, что конечный пользователь, значительно быстрее увидит результат своего взаимодействия с интернет-ресурсом.

В то же время AJAX может в буквальном смысле «похоронить» всю работу SEO-специалиста при некорректном использовании. Поэтому  о минусах использования данной технологии говорят обычно именно оптимизаторы.

Минусы использования:

  • Страницы сайта не индексируются поисковыми системами. Это одна из основных проблем использования AJAX. Особенно она актуальна, если принимается решение о реализации динамической подгрузки содержимого на уже оптимизированных сайтах. Некорректное использование может привести к тому, что проиндексированные страницы, которые и создают трафик, просто исчезнут из результатов поиска.
  • Искажение данных статистики. Так как поисковые системы перестают «видеть» AJAX-страницы, данные от счетчиков, установленных на них, передаются некорректно. Для крупных ресурсов, особенно работающих в нише e-commerce, это такая же большая потеря, как и исчезновение посадочных страниц из выдачи.

Из-за этих существенных минусов долгое время AJAX был неким «табу» среди оптимизаторов. Однако сегодня есть достаточно простое и логичное решение, которое может убрать негативный эффект от использования данной технологии и прийти к разумному компромиссу между SEO-специалистом, владельцем сайта, разработчиком и конечным пользователем. То есть, в полной мере использовать вышеперечисленные плюсы AJAXи избавиться от недостатков.

Как показать поисковику, где находится контент страницы на AJAX?

Основной проблемой AJAX является то, что поисковая система не может проиндексировать содержимое динамической страницы. Но для выполнения SEO-задач необходимо каким-то образом предоставить поисковому роботу возможность увидеть этот контент.

На данный момент существует несколько вариантов, как это сделать:

1.   Использование HIJAX (устаревший способ)

Это решение подразумевает использование специальной технологии под названием HIJAX (названа разработчиком, который ее придумал). Суть ее заключалется в том, что одновременно с вызовом AJAX-функции происходит переход по статической ссылке с параметром. Таким образом пользователь получает страницу с динамическим содержимым, а робот, игнорирующий вызов функции, попадает на статическую html-страницу. Выглядит это примерно так:

foo 32

Где, ="ajax.html?foo=32"  – это статическая ссылка для поискового бота, а 'ajax.html#foo=32' – это параметр для вызова AJAX-кода.

В данном случае статическая страница – это «html-слепок» (копия) динамической страницы, которую видит пользователь.

Данное решение, хоть и остается рабочим и эффективным на сегодняшний день, уже несколько устарело. С развитием технологий сайтостроения и все большей популярностью исполняемых Java-скриптов поисковые системы пришли к тому, что необходимо предоставить веб-мастерам более простые и эффективные пути решения проблемы.

2.   Использование знака «!» как указателя для поисковой системы в URL-адресе (актуальный способ)

Более современный способ, позволяющий роботу поисковой системы просканировать и проиндексировать содержимое AJAX-страницы, упростил жизнь веб-мастерам и разработчикам, позволив избежать модифицирования всех ссылок на динамическое содержимое по методу HIJAX.

Теперь для того, чтобы указать поисковому боту на то, что AJAX-страница имеет статический «html-слепок», достаточно добавить в URL восклицательный знак. Выглядит это следующим образом:

http://www.example.com/#stranica – стандартная «ссылка» на AJAX-страницу

http://www.example.com/#!stranica – модифицированный формат «ссылки» на AJAX-страницу

В таком случае как только робот встретит в URL-адресе #!, он запросит у сервера «html-слепок» страницы, который сможет проиндексировать. В то же время пользователю будет показана AJAX-страница.

Единственным условием является то, что «html-слепок» страницы должен быть доступен для поискового бота по URL-адресу, где #!, заменен на ?_escaped_fragment_=.

http://www.example.com/#!stranica – «ссылка» на AJAX-страницу

http://www.example.com/?_escaped_fragment_=stranica – ссылка на html-версию страницы

При использовании данного способа в кэше поисковой системы будет храниться html-версия страницы, доступная по «уродливому», как его называет Google, URL-адресу с ?_escaped_fragment_=, но на выдаче вид ссылки на сайт будет сохранен, то есть в нем будет стоять #!.

Такой способ решения проблем рекомендован для применения системой Yandex, о чем можно прочесть в официальном руководстве данной поисковой системы.

Некоторые дополнительные особенности

Использование технологии AJAX подразумевает некоторые дополнительные особенности, которые нужно учитывать при разработке нового сайта и при обновлении архитектуры уже существующего. К ним можно отнести следующие:

1. ЧПУ-адреса страниц. В стандартном виде, как было описано в примере выше, адреса страниц все равно получаются не очень красивыми, хоть Googleи называет их prettyURL. То есть, в них все равно будут присутствовать символы #!. Однако эту проблему можно обойти, присвоив стандартные статические ЧПУ (человекопонятные URL-адреса) страницам, использующим AJAX. Единственное, что нужно учесть: при этом способ имплементации «html-слепка» будет отличаться.

Для страницы вида:

http://www.example.com/stranica

«html-слепок» должен находиться по адресу:

http://www.example.com/stranica?_escaped_fragment_=

Т.е. значение параметра будет пустым, но в код самой страницы (в теге <head>) необходимо добавить строку:

 

В «html-слепке» данного тега быть недолжно, иначе он не проиндексируется.

Подобная имплементация будет актуальна и для сайтов, полностью построенных на AJAX, где то же самое придется проделать с главной страницей и любыми другими статическими URL.

2. Формирование файла Sitemap.xml. Поисковая система Yandex в своем руководстве «Помощь Вебмастеру» говорит следующее: «Ссылки, содержащие #!, также можно использовать в карте сайта», подразумевая, что можно использовать и ссылки на «html-слепки», т.е., содержащие ?_escaped_fragment_=. В то же время Google в явном виде говорит о том, что нужно использовать ссылки только с дополнением #!:

00

«Подводные камни» при использовании AJAX

Несмотря на кажущуюся понятность и простоту предложенных методов оптимизации AJAX-страниц, под которой подразумевается их доступность поисковым ботам, есть несколько моментов, о которых стоит задуматься перед внедрением технологии, особенно на работающих сайтах.

К ним можно отнести следующие:

  • Непрогнозируемые последствия для ранжирования. Если нужно, например, для тысячи однотипных товаров поменять URL-адреса, организовав их вывод посредством AJAX, то даже при настройке постраничных 301 редиректов, ресурс может сильно «качнуть» в поисковой выдаче. Вероятность таких последствий непрогнозируемая, так как планируемые изменения не идут в разрез с требованиями поисковых систем. Но на примере ряда сайтов, можно утверждать, что проблемы вполне вероятны. В данном случае можно рекомендовать только постепенное внедрение, разбитое на несколько итераций.
  • Неясный механизм расчета скорости загрузки страницы. Данный параметр является косвенным фактором ранжирования сайта поисковыми системами, однако его влияние достаточно велико. В случае с AJAX-страницами не ясно, на основании загрузки какой из версий производится расчет скорости загрузки – версии для пользователей или html-версии для поискового робота, а значит, на данный параметр сложнее повлиять. Единственной рекомендацией тут может быть следующая: делать максимально быстрыми обе версии.

Вывод

Сегодня использование AJAX уже не является табу для поисковой оптимизации. Более того, при правильном подходе вы можете использовать данную технологию так же эффективно, как и простой html, но при этом получить ряд дополнительных преимуществ, которые дает AJAX.Основной плюс – это возможность строить более быстрые и удобные пользовательские интерфейсы.

Однако стоит помнить, что SEOшники не зря настороженно относятся к данной технологии. При некорректном использовании, без соблюдения требований поисковых систем, AJAX может привести к плачевным последствиям в виде серьезных потерь органического трафика и в ранжировании. Прежде чем «выкатывать» какую-либо из AJAX-разработок на основной домен, стоит удостовериться в том, сделана ли она в соответствии с одним из двух рассмотренных в статье способов. А также проверить, как поисковые боты «видят» данное изменение, например, при помощи инструмента «Посмотреть как Googlebot».

Оба описанных в данной статье способа решения возможных проблем являются рабочими – их использование протестировано на реальных проектах и доказало свою эффективность. Но начиная с октября 2015 года, поисковая система Google не рекомендует использовать описанные в этой статье технологии индексирования AJAXстраниц, о чем было официально написано в блоге GoogleWebmasterCenterBlog. Вместо этого, система предлагает следовать принципам «ProgressiveEnhancement» при создании сайтов, что позволит роботам Google лучше интерпретировать динамический контент – в текущий момент система в состоянии самостоятельно распознать его без дополнительной настройки, интерпретируя .jsи .css. Несмотря на это, описанные нами механизмы полностью поддерживаются поисковой системой и остаются стабильно рабочими до сегодняшнего дня.

promodo.ua