Один из самых простых способов вывести результат Ajax-запроса на страницу – это добавить HTML-фрагмент, используя нестандартное, но повсеместно применяемое свойство innerHTML. Если возвращенные с веб-сервиса данные отформатированы как текстовый HTML, то они могут быть добавлены прямо в документ с небольшим вмешательством (либо отсутствием такового).
Как было показано в предыдущих примерах, ответ уже отформатирован как HTML. Чтобы закончить работу, надо вставить ответ на страницу. Это приводит ко второму ключевому моменту Ajax-приложения – как добавить на страницу новые данные.
Один из подходов внедрения ответа на страницу – это вручную добавить пустой элемент на страницу и использовать его в качестве "заполнителя" для возвращаемых данных. Однако лучше поступить следующим образом – создавать этот элемент динамически, чтобы, если язык сценариев отключен, выходной элемент не воздействовал на страницу. И что гораздо важнее, если элемент создается динамически, то вам не нужно изменять каждую страницу, которая будет использовать выходной элемент.
Когда "заполнитель" объекта добавлен на страницу, мы можем обратиться к элементу и использовать его повторно или обратиться к элементу, удалить его и создавать его затем заново каждый раз, когда приложение запущено. Второй подход привлекателен вследствие того, что нам нет необходимости очищать элемент перед добавлением нового материала.
Это простой и быстрый подход к Ajax, но в то же время рискованный: надо очень сильно доверять веб-сервису, чтобы вставлять HTML-код прямо на страницу, не зная, что он содержит. Даже если мы используем свои собственные сервисы, мы можем сделать ошибку, в результате чего страница может не читаться. Если приложение каким-то образом взломано, это может кончиться внедрением сценария, который может вызвать проблемы у посетителей веб-страницы. При использовании этого подхода надо помнить о следующем:
- вставка XHTML-фрагментов с помощью innerHTML означает, что вы полностью доверяете веб-сервису;
- вставленные фрагменты могут быть некорректно отформатированы,
страница может стать нечитаемой.