2012-01-10 2 views
0

У меня есть HTML-форма. При отправке он создает файл Excel и возвращает его. На всех других формах у меня есть экран загрузки, отображаемый в функции onSubmit и скрытый в функции document.ready, но когда возвращается файл, нет document.ready, поэтому мой экран загрузки не скрывает.Экран загрузки jQuery в форме submit с ответом файла

Я пробовал плагин формы jQuery с функцией обратного вызова, но таким образом я не смог нормально показать страницу ответа на других формах. То же самое происходит с функцией $.post() с обратным вызовом.

Все, что я хочу, - это вызвать функцию loadingScreenHide, когда форма отправки завершена и оставить все остальное как обычно.

Любые идеи?

Спасибо.

Кода я судимый, как: с формой функцией плагина обратного вызова (возвращает истину, не кажется, работают.): $ ('формы') ajaxForm (функция() {activateDeactivateScreen ('скрытый'); возвращает истину; });

или с сообщением вместо: $ .post ($ ('form'). Attr ('action'), $ ('form'). Serialize(), function() {activateDeactivateScreen ('hidden'); return true;});

2 основные проблемы, когда я использую нормальный представить я не имею обратный вызов, и когда я получаю обратный вызов я не имею нагрузку нормально отправить/Страницу

я также имел представление об изменении своих страниц Java Server для сохранить файл временный и перенаправление загрузки, но таким образом я должен был бы изменить около 20-30 источников Java, поэтому я предпочел бы яваскрипт решения

+0

Не могли бы вы высказать свой код, чтобы мы могли видеть процесс, который вы используете. –

+0

Я предполагаю, что вы отправляете свои данные формы в PHP-скрипт или любой другой CGI-сервер. Он обрабатывает ваши данные и возвращает приложение/excel mimetype, что заставляет загружать, поскольку браузер не может анализировать exel-документы. Таким образом, ваша фактическая страница, на которой вы отправили форму, даже не изменится. Насколько я вижу, вы должны отправить свои данные через AJAX, временно сохранив exel-файл на своем сервере, верните ссылку на метод успеха вашего вызова AJAX. Эта ссылка может быть открыта с помощью 'document.location = link;' и снова принудительно загрузить. – buschtoens

+0

@silvinci: я получаю эти файлы excel со многих разных страниц (20-30 различных сервлетов), поэтому изменение источников java было бы большой работой – Georg

ответ

0

указать полный обратный вызов в ajaxSetup

$.ajaxSetup({ 
complete:function(){ 
$("#loadingScreenID").hide(); 
} 
}); 

и очередной пост после этого

$.post(); 
+0

, когда я использую экран загрузки функции $ .post(), но файл isn 't показан для загрузки, или мои другие формы не перенаправляются на их страницы ответов. как это можно сделать? – Georg

+0

см. Комментарий @silvinci – Rafay

Смежные вопросы