Projet

Général

Profil

Bug #2457

Eviter le double get pour les generic ajaxform

Ajouté par Jérôme Schneider il y a environ 11 ans. Mis à jour il y a environ 9 ans.

Statut:
Rejeté
Priorité:
Normal
Assigné à:
Jérôme Schneider
Version cible:
Début:
01 février 2013
Echéance:
% réalisé:

0%

Temps estimé:
Patch proposed:
Oui
Planning:

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.


Fichiers

Historique

#1

Mis à jour par Mikaël Ates (de retour le 29 avril) il y a environ 11 ans

  • Version cible mis à 0.4
#2

Mis à jour par Mikaël Ates (de retour le 29 avril) il y a environ 11 ans

  • Version cible changé de 0.4 à 0.9
#3

Mis à jour par Mikaël Ates (de retour le 29 avril) il y a presque 11 ans

  • Projet changé de APS42 à Calebasse
  • Version cible 0.9 supprimé
#4

Mis à jour par Mikaël Ates (de retour le 29 avril) il y a presque 11 ans

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;
});
});
#5

Mis à jour par Mikaël Ates (de retour le 29 avril) il y a presque 10 ans

  • Version cible mis à 1.1.3
#6

Mis à jour par Serghei Mihai il y a plus de 9 ans

  • Patch proposed mis à Non

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 /

#7

Mis à jour par Serghei Mihai il y a plus de 9 ans

#8

Mis à jour par Serghei Mihai il y a plus de 9 ans

  • Statut changé de Nouveau à Résolu (à déployer)
#9

Mis à jour par Benjamin Dauvergne il y a plus de 9 ans

Juste pour que ce soir clair: en quoi l'ajout du / limite les bind sur l'event click du bouton ?

#10

Mis à jour par Serghei Mihai il y a plus de 9 ans

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

#11

Mis à jour par Benjamin Dauvergne il y a plus de 9 ans

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:

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.

#12

Mis à jour par Mikaël Ates (de retour le 29 avril) il y a plus de 9 ans

  • Statut changé de Résolu (à déployer) à En cours
  • Version cible changé de 1.1.3 à 1.3

Le problème étant plus complexe que prévu et non résolu, je déplace le ticket vers la prochaine version.

#13

Mis à jour par Jérôme Schneider il y a environ 9 ans

  • Statut changé de En cours à Rejeté

Formats disponibles : Atom PDF