Всем доброго времени суток! Вопрос вот в чем: есть html-страница. На ней форма отправки данных, подгружающая и парсящая файл csv и подгружающая архив. В csv хранятся адреса почты. Архив - приложение к письму. Форма обрабатывается скриптом jQuery (библиотека jQuery Form): $(document).ready(function(){ $("form").submit(function(){ var options = { url: 'sent.php', dataType: 'html', status: $(".result").html(''), type: 'POST', success: function(msg){ $(".result").append(msg); } }; $(this).ajaxSubmit(options); return false; }) }); Очень хочется, чтобы PHP отдавал, а JS обрабатывал отдаемое, типа: "Файл загружен", "отправка на %email_address%... OK!" и т.д. Но я понимаю, что JS реагирует на ответ сервера. Как сделать так, чтобы это было динамично и динамично отображались данные?
Ответ
Использовать сокеты (двухстороннее общение). Тогда сервер при выполнении определенного этапа легко сможет сообщить об этом клиенту. Long polling (Пример для php). Суть метода проста. Отправляем запрос на сервер, если ничего еще не обработано, сервер просто не возвращает ответ (держит соединение открытым - в пхп может реализовываться с помощью sleep). Как только что-то произошло, сервер закрывает соединение, отдавая в ответе нужные Вам данные (успешно обработанный этап в вашем случае). Как только клиент получает ответ, он перепосылает запрос, ожидая следующий ответ. Но тут да, при переоткрытии соединения нет гарантий, что не выполниться несколько этапов за это время - поэтому лог не отправленных статусов лучше хранить.
Комментариев нет:
Отправить комментарий