Bonjour,
Dans mon code jquery, j'utilise des templates par simplicité de manipulation.
Pour situer le but du code est de travailler sur des fichiers avec la possibilité d'uploader de nouveaux fichier et autres.
Dans mon fichier JS principal, j'ai une fonction appelée au retour d'un appel ajax
le premier processTemplate semble fonctionner très bien mais c'est plutôt pour la template associée au div new_file. Ce div contient un formulaire pour charger un fichier ou créer un dossier.
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 // check and process the file list function checkFileList(response) { if (response == 'e4') { $('#infos').html('Error 4, invalid call'); } else if (response == '0') { $('#file_list').html('Error 2, file not found'); } else { try { var oJson = JSON.parse(response); $('#file_list').processTemplate({'list' : oJson.list, 'parent' : oJson.parent}); $('#new_file').processTemplate({'perm' : oJson.write}); } catch(e) { $('#infos').html('Error 5, processing<br/>'+response+'<br/>'+e); } } }
Le formulaire étant différent qu'il s'agisse d'un fichier ou un dossier, j'ai un sélecteur pour choisir lequel on affiche auquel j'essaye d'associer un évenement.
Voici le code de ma template
Seulement le code JS à l'intérieur de la template ne s'exécute visiblement pas et il bloque même l'affichage de la template puisque j'ai une erreur dans mon div infos
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
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64 {#if $T.perm == 0} You do not have the permission to create a file or a folder here {#else} <script type="text/javascript"> $(document).ready(function() { try { // initial $('#type_file_form').show(); $('#type_folder_form').hide(); // when change the radio box, show the right form $('#type_file').change(function(){ $('#type_file_form').show(); $('#type_folder_form').hide(); }); $('#type_folder').change(function(){ $('#type_folder_form').show(); $('#type_file_form').hide(); }); // reset the two forms $('#file_form').reset(); $('#folder_form').reset(); } catch(e2) { alert(e2); } }); </script> Type : <input type="radio" name="type_f" value="type_file" id="type_file" checked="checked" /> <label for="type_file"><img src="img/file.png" /></label> <input type="radio" name="type_f" value="type_folder" id="type_folder" /> <label for="type_folder"><img src="img/folder.png" /></label> <br /><br /> <div id="type_file_form"> The file will be created in the current folder. <br /><br /> <form id="file_form" method="POST" action="proceed_files.php?action=newfile" enctype="multipart/form-data"> File : <input name="new_file" type="file" /><br /> Public : <input type="radio" name="public" value="yes" id="yes" /> <label for="yes">Yes</label> <input type="radio" name="public" value="no" id="no" checked="checked" /> <label for="no">No</label><br /> Permission : <input type="radio" name="perm" value="r" id="r" /> <label for="r">Read</label> <input type="radio" name="perm" value="w" id="w" /> <label for="w">Write</label> <input type="radio" name="perm" value="p" id="p" checked="checked" /> <label for="p">Private</label><br /> Description : <textarea id="desc_file" name="description">description</textarea><br /> <input type="submit" value="send" /><br /> </form> </div> <div id="type_folder_form"> The folder will be created in the current folder. <br /><br /> <form id="folder_form" method="POST" action="proceed_files.php?action=newfolder" enctype="multipart/form-data"> <input id="folder_name" name="name" type="text" value="folder's name" /><br /> Public : <input type="radio" name="public" value="yes" id="yes" /> <label for="yes">Yes</label> <input type="radio" name="public" value="no" id="no" checked="checked" /> <label for="no">No</label><br /> Permission : <input type="radio" name="perm" value="r" id="r" /> <label for="r">Read</label> <input type="radio" name="perm" value="w" id="w" /> <label for="w">Write</label> <input type="radio" name="perm" value="p" id="p" checked="checked" /> <label for="p">Private</label><br /> Description : <textarea id="desc_folder" name="description">description</textarea><br /> <input type="submit" value="send" /><br /> </form> </div> {#/if}
et pas de formulaireError 5, processing
{"parent":0,"list":[],"write":1}
SyntaxError: missing } after try block
Le problème est visiblement dans le try/catch qui pourtant me semble correct.
Sans ce test la template s'affiche bien mais le code n'est pas exécuté (on voit toujours les deux formulaires, rien ne se passe au changement des boutons...) (c'était la raison pour laquelle j'avais rajouté le try/catch)
ça fait un bout de temps que je suis bloqué dessus, je vois pas trop
merci
Partager