AJAX, что означает асинхронный JavaScript XML - это метод, который позволяет асинхронно обновлять веб-страницы, что означает, что браузеру не нужно перезагружать всю страницу, когда изменился лишь небольшой объем данных на странице. AJAX передает только обновленную информацию на сервер и с сервера.
Стандартные веб-приложения обрабатывают взаимодействие между веб-посетителями и сервером синхронно. Это означает, что одно происходит за другим; сервер не многозадачный. Если нажать кнопку, сообщение отправляется на сервер, а ответ возвращается. Вы не можете взаимодействовать с другими элементами страницы, пока ответ не получен и страница не обновлена.
Очевидно, что такая задержка может негативно повлиять на опыт посетителя веб-сайта - следовательно, AJAX.
Что такое AJAX?
AJAX - это не язык программирования, а метод, который включает в себя клиентский скрипт (т.е. скрипт, который запускается в браузере пользователя), который обменивается данными с веб-сервером. Кроме того, его название несколько вводит в заблуждение: хотя приложение AJAX может использовать XML для отправки данных, оно также может использовать только простой текст или текст JSON. Но, как правило, он использует объект XMLHttpRequest в вашем браузере для запроса данных с сервера и JavaScript для отображения данных.
AJAX: синхронный или асинхронный
AJAX может обращаться к серверу синхронно и асинхронно:
- Синхронно, в котором сценарий останавливается и ждет, пока сервер отправит ответ, прежде чем продолжить.
- Асинхронный, в котором скрипт позволяет продолжить обработку страницы и обрабатывает ответ, если и когда он прибудет.
Обработка вашего запроса синхронно аналогично перезагрузке страницы, но вместо всей страницы загружается только запрошенная информация. Следовательно, синхронное использование AJAX быстрее, чем его вообще - но все же требуется, чтобы ваш посетитель дождался загрузки, прежде чем будет продолжено какое-либо дальнейшее взаимодействие со страницей. Люди знают, что им иногда нужно ждать загрузки страницы, но большинство людей не привыкли к продолжительным значительным задержкам после того, как они находятся на сайте.
Обработка вашего запроса асинхронно избегает задержки во время поиска с сервера, потому что ваш посетитель может продолжать взаимодействовать с веб-страницей; запрошенная информация будет обработана в фоновом режиме, а ответ обновит страницу по мере ее поступления. Кроме того, даже если ответ задерживается - например, в случае очень больших данных - посетители сайта могут не осознавать этого, потому что они заняты в другом месте на странице.
Поэтому предпочтительным способом использования AJAX является использование асинхронных вызовов везде, где это возможно. Это настройка по умолчанию в AJAX.
Зачем использовать синхронный AJAX?
Если асинхронные вызовы обеспечивают такой улучшенный пользовательский интерфейс, почему AJAX вообще предлагает способ выполнять синхронные вызовы?
Хотя асинхронные вызовы являются лучшим выбором в подавляющем большинстве случаев, бывают редкие ситуации, когда имеет смысл разрешить посетителю продолжать взаимодействовать с веб-страницей до определенного процесса на стороне сервера завершается.
Во многих из этих случаев может быть лучше вообще не использовать AJAX, а просто перезагрузить всю страницу. Синхронная опция в AJAX существует для небольшого числа ситуаций, в которых вы не можете использовать асинхронный вызов, но перезагрузка всей страницы не требуется. Например, вам может потребоваться обработать некоторые транзакции, в которых важен порядок. Рассмотрим случай, когда веб-страница должна вернуть страницу подтверждения после того, как пользователь что-то нажал. Эта задача требует синхронизации запросов.