Hello,
je soumet mon formulaire côté client comme ceci :
Côté servlet :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28 //callback handler for form submit $("form[name=formCartoDonnees]").submit(function(e) { var postData = $(this).serializeArray(); var formURL = $(this).attr("action"); $("#recapContainer").append("<div id=loading> </div>") $("#loading").css("width",$("#recapContainer").css("width")); $("#loading").css("height",parseInt($("#recapContainer").css("height")+5)); $.ajax( { url : formURL, type: "POST", data : postData, success:function(data, textStatus, jqXHR) { //data: return data from server $("#loading").hide(); //window.open(data); }, error: function(jqXHR, textStatus, errorThrown) { //if fails } }); e.preventDefault(); //STOP default action });
Ce que je souhaite c'est que lorsque je soumet mon form, avoir mon image "loading" le temps du traitemet côté serveur puis une fois fini, on cache le loading et on affiche la fenetre de téléchargement de mon zip.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37 LOGGER.info(request.getParameter("dateDebut")); LOGGER.info(request.getParameter("dateFin")); LOGGER.info(request.getParameter("typeRecherche")); LOGGER.info(request.getParameter("typeDownload")); String typeGeneration = request.getParameter("typeDownload"); String strDateFin = request.getParameter("dateFin"); String strDateDebut = request.getParameter("dateDebut"); String valeurs = request.getParameter("listeValeurs"); String[] listeValeurs = valeurs.split(","); // lancement generation Cartographie carto = new Cartographie(); String nomZipSortie = carto.executer(typeGeneration, strDateDebut, strDateFin, listeValeurs, request.getParameter("typeRecherche")); File file = new File(nomZipSortie); // construction de la reponse a partir du zip if(file.exists()){ byte[] buf = new byte[1024]; response.setContentType("application/zip"); response.setHeader("Cache-Control", "cache"); response.setHeader("Pragma", "cache"); response.setHeader("Content-disposition", "attachment;filename=\"" + nomZipSortie.replaceAll("sortie/", "") + "\""); response.setContentLength((int) file.length()); FileInputStream in = new FileInputStream(nomZipSortie); OutputStream out = response.getOutputStream(); int count = 0; while ((count = in.read(buf)) >= 0) { out.write(buf, 0, count); } in.close(); out.close(); }
C'est possible de faire ça?
EDIT:
mon but étant, su mon ihm, je soumet mon form, j'ai un zouli loader, et une fois que mon fichier a été généré côté servlet et renvoyé coté client, je cache le loader et j'affiche la popup de téléchargement.
Car actuellement, lorsque je soumet mon form, la servlet génère un fichier zip et le renvoie, mais j'ai pas de loader, donc si mon traitement dure longtemps, niveau ergonomie, pas top.
Mais à priori d'après ce que j'ai vu , c'est pas faisable en ajax.
Partager