Я правильно понимаю Ajax? - PullRequest
       9

Я правильно понимаю Ajax?

6 голосов
/ 05 февраля 2009

Я читал об Ajax и хотел бы узнать от сообщества stackoverflow, правильно ли я все понимаю.

Таким образом, при обычном взаимодействии клиент-сервер пользователь запрашивает в браузере типы веб-браузера, и на сервер отправляется HTTP-запрос, запрашивающий страницу и ресурсы (css, pics) с веб-сервера. Веб-сервер отвечает клиенту через HTTP запрошенную страницу / ресурсы, и браузер отображает HTML / JavaScript для просмотра страницы пользователем.

1) Можно ли с уверенностью сказать, что объект XMLHttpRequest (XHR) выполняет тот же процесс, что и браузер, за исключением того, что вы не запрашиваете html с сервера, вы запрашиваете текст в каком-либо формате?

2) Правда ли, что объект XHR очень похож на обычный объект, которым может управлять программа, создающая объект (например, обычный объект), но он также отправляет и получает данные с другой программой (веб-сервером) через HTTP ?

3) Поэтому, на мой взгляд, когда создается XHR, он загружается в память, и мы устанавливаем некоторые аргументы объектов, когда выполняем request.open («GET», url, true). Как только мы выполняем request.send (null), объект в основном пытается «получить» URL через HTTP, и как только мы получаем данные с сервера, он помещается в аргумент responseText. Я правильно понимаю?

4) Также синхронно против асинхронно. Когда я думаю о синхронности, я думаю о шагах, которым нужно следовать по порядку. Например, я нажимаю кнопку, данные отправляются на сервер, и мне приходится ждать возвращения данных, прежде чем я смогу сделать что-либо еще. При асинхронных соединениях я нажимаю кнопку, данные отправляются на сервер, я делаю все, что захочу, пока данные отправляются обратно. Это хорошая аналогия?

Ответы [ 4 ]

8 голосов
/ 05 февраля 2009

1) Нет. Объект XMLHttpRequest делает именно то, что подразумевает его имя - он инициирует HTTP-запрос. Этот запрос может быть в формате XML, HTML или PHP. В конце концов, браузер не заботится, потому что в запросе AJAX он не анализирует запрос - вы должны сделать это самостоятельно. Поэтому он не выполняет автоматическую визуализацию HTML-кода из запроса AJAX.

2) Я не уверен насчет манипуляций (объект XHR может быть неизменным), но возможно. Нужно ли вам когда-либо расширять его или манипулировать им? Да, вы можете изменить свойства объекта и так далее. Приношу извинения. Сначала я тебя не поняла:)

3) Да.

4) Отличная аналогия. Это именно то, что происходит. Другая аналогия - шоссе с 4 полосами движения - асинхронное, как улица с односторонним движением - синхронная. Если один автомобиль ломается на шоссе с 4 полосами движения, остальные могут продолжать движение с нормальной скоростью, но если один автомобиль ломается на дороге с односторонним движением, все замерзает. :)

1 голос
/ 05 февраля 2009

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

image
(source: adaptivepath.com )

0 голосов
/ 05 февраля 2009

Мне кажется, нормально.

Ваше первое замечание, хотя и не совсем правильное, вы можете запросить html с сервера, используя ajax - это не обязательно текст, json или xml, как показывает большинство примеров.

0 голосов
/ 05 февраля 2009

Может показаться, что вы понимаете, как работает AJAX. Я не вижу в этом большого несогласия с кратким изложением работ по применению AJAX.

Я бы сказал, однако, что с объектом XMLHttpRequest вы не ограничены GET. Вы также можете использовать POST и другие HTTP-глаголы.

При асинхронных вызовах вы регистрируете функцию обратного вызова, объект XMLHttpRequest вызывает ваш метод после завершения асинхронного запроса.

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