Обратите внимание, что в атрибуте target формы указан id фрейма. На этом этапе если нажать кнопку «Загрузить» файл будет отправлен серверу, а результат – загружен в iframe, т. е. с точки зрения посетителя никаких изменений не произойдет, т. к. фрейм невидимый. Примечание. Как вы знаете, в iframe может быть вставлена любая html страница или результат запроса. Теперь нужно передать данные из фрейма на основную страницу. Мы заранее не знаем, когда придет ответ сервера, поэтому логично, что он и должен обновлять основную страницу. Для этого в ответ сервера необходимо вставить JavaScript код, который будет выполнен после окончания загрузки. Обычно этот код просто вызывает js-функцию, объявленную в основной странице и передает ей результаты выполнения запроса. Схематически асинхронная отправка файла изображена на диаграмме. Примечание. Описанная техника называется Remote Scripting.
Подробнее о ней можно почитать в этой статье. Теперь посмотрим, как это работает на практике. Как я и обещал, в примере будет использоваться фреймворк CodeIgniter. Прежде всего, создаем контроллер (application/controllers/asyncuploader. php), с двумя методами.