Bug #2457
Eviter le double get pour les generic ajaxform
0%
Description
La fonction generic_ajaxform_dialog dans calebasse.dialog.js fait un double get. Il faudrait gérer ça comme la event_dialog de l'agenda.
Files
History
Updated by Mikaël Ates about 11 years ago
- Project changed from 104 to Calebasse
- Target version deleted (
159)
Updated by Mikaël Ates about 11 years ago
Pour éviter le double get, remplacer:
$('.stats').click(function() {
var url = 'form/' + this.id;
generic_ajaxform_dialog(url, 'Choix des parametres',
'#ajax-dlg', '700px', 'Extraire', false,
function (dialog) {
// code spe
});
});
par
$('.stats').click(function() {
var url = 'form/' + this.id;
$('#ajax-dlg').load(url,
function () {
$(this).dialog({title: 'Choix des parametres', width: '700px',
buttons: [ { text: "Fermer",
click: function() { $(this).dialog("close"); } },
{ text: "Extraire",
click: function() { $("#ajax-dlg form").submit(); $(this).dialog("close"); } }]});
// code spe
});
return false;
});
});
Updated by Serghei Mihai about 10 years ago
- Patch proposed set to No
Ce n'est pas l'appel à generic_ajax_dialog
qui genere plusieurs appels GET, mais des multiples binds au click sur des boutons.
J'ajouterais un /
à la fin de la variable url
pour éviter un redirect vers l'url avec /
Updated by Serghei Mihai about 10 years ago
- File 0001-statistics-fix-the-stats-form-url.patch 0001-statistics-fix-the-stats-form-url.patch added
- Patch proposed changed from No to Yes
Updated by Benjamin Dauvergne about 10 years ago
Juste pour que ce soir clair: en quoi l'ajout du /
limite les bind sur l'event click du bouton ?
Updated by Serghei Mihai about 10 years ago
J'avais mal compris le problème.
Le souci vient du fait qu'on ne peut pas intercepter les redirects suite à la sousmission des formulaires.
La fonction generic_ajaxform_dialog
ne voit pas la redirection et recharge la même page, dans la plupart des cas, ce que donne au final 2 GET sur la même url.
Cela pose d'autres problèmes ailleurs, comme l'affichage des notifications via django messages.
Je pense que nous devrions revoir notre façon de gerer les formulaires ajax
Updated by Benjamin Dauvergne about 10 years ago
Ok donc il n'y a pas vraiment deux GET émis par le js mais 2 gets suite à redirection ce qui n'est pas bien grave. Par contre je ne vois pas en quoi ça perturbe les messages (en dehors du fait que ça ne doit pas marcher du tout si on extrait juste un bout de la page HTML renvoyée).
Si vous refondez cette partie du code vous pouvez regarder ce qu'on a fait sur gadjo et la nouvelle admin authentic, c'est assez simple et efficace:
- http://repos.entrouvert.org/gadjo.git/tree/gadjo/static/js/gadjo.js
- http://repos.entrouvert.org/authentic.git/tree/authentic2/manager/views.py#n45
On évite complètement les redirections en fin de vue en générant un JSON avec l'URL de l'entête Location. Je sais juste que ça ne marcherait pas avec des boites de dialogue récursives à cause des #id
qui se marchent dessus.
Updated by Mikaël Ates about 10 years ago
- Status changed from Résolu (à déployer) to En cours
- Target version changed from 1.1.3 to 1.3
Le problème étant plus complexe que prévu et non résolu, je déplace le ticket vers la prochaine version.