IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

AJAX Discussion :

Django/Python : mise à jour liste déroulante en ajax


Sujet :

AJAX

  1. #1
    Membre régulier
    Homme Profil pro
    Administrateur de base de données
    Inscrit en
    Décembre 2011
    Messages
    257
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Administrateur de base de données
    Secteur : Santé

    Informations forums :
    Inscription : Décembre 2011
    Messages : 257
    Points : 76
    Points
    76
    Par défaut Django/Python : mise à jour liste déroulante en ajax
    Bonjour,

    je sais que cette question a été posée à mainte reprises mais je ne trouve pas dans les réponses une solution à mon problème
    je suis newbie en développement et travaille en Django/Python depuis 2 mois

    Je développe actuellement une solution Django avec une application "randomisation"

    j'ai différents profils utilisateurs dont les droits sont liés à leur site de rattachement
    pour faire simple j'ai 2 statuts "International" et "Site"
    le statut "Site" donne des droits au site de l'utilisateur uniquement
    le statut "International" donne des droits sur l'ensemble des sites

    lorsque un utilisateur 'International" se connecte, il peut sélectionner différents sites et les données liées à ce site sont appliquées
    cela entraine notamment l'apparition de message d'alerte et le 'masquage' du sous-menu "Randomization" (capture 1 - flèche rouge)

    pour mettre en place cette gestion de droits, j'ai utilisé :
    - un middleware qui initialise et met à jour les données à chaque requête ; je stocke ces données dans des variables de session pour pouvoir y avoir accès dans toutes mes vues
    - un context_processoir pour avoir accès à ces variables dans l'ensemble des templates

    J'ai également mis en place une requete ajax qui mets à jour les droits en fonction du site sélectionné
    çà fonctionne

    mais je souhaite également mettre à jour une autre liste déroulante en ajax en fonction du site sélectionné (capture 2) et là je galère depuis 2 jours
    je pensais que ce serait simple mais quelque chose doit m'échapper

    en résumé, si l'utilisateur click sur "Reallocate a treatment", le formulaire "Reallocation form" s'ouvre (capture 2) sur lequel on peut sélectionner un patient parmi une liste de patients
    je veux que cette liste soit restreinte à la liste des patients du site sélectionné et que cette liste se mette à jour si l'utilisateur modifie le site sur cette page sans recharger la page (donc en ajax)

    je pensais donc ajouter une requête ajax sur le même évènement mais çà ne fonctionne pas et je m'y perd
    si quelqu'un peut me guider un peu...

    capture 1
    Nom : nav.png
Affichages : 444
Taille : 5,5 Ko

    capture 2
    Nom : nav2.png
Affichages : 449
Taille : 15,5 Ko


    script.js

    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
     
    $(document).ready(function() {
     
        var prevent = false;
     
        function getCookie(name) {
            var cookieValue = null;
            if (document.cookie && document.cookie !== '') {
                var cookies = document.cookie.split(';');
                for (var i = 0; i < cookies.length; i++) {
                    var cookie = cookies[i].trim();
                    // Does this cookie string begin with the name we want?
                    if (cookie.substring(0, name.length + 1) === (name + '=')) {
                        cookieValue = decodeURIComponent(cookie.substring(name.length + 1));
                        break;
                    }
                }
            }
            return cookieValue;
        }
     
     
        $("#site").on("change", function(event){
     
            var csrftoken = getCookie('csrftoken');
     
            $.ajax({
                type: "POST",
     
                url: $("#site").data("randomization-url"),
                data: {
                    csrfmiddlewaretoken: csrftoken,
                    'site' : $(this).val(),	
                },
                dataType: 'html',
                success: function (data) {
                    if (data.includes("Insufficient")) {
                        $("#alerte").html(data);
                        $("#randomize").children().remove();
                    }
                    else {
     
                        $("#alerte").children().remove();
                        $("#randomize").html(data);
                    }
                }
            });
     
        });
     
    });

  2. #2
    Expert éminent sénior
    Avatar de mathieu
    Profil pro
    Inscrit en
    Juin 2003
    Messages
    10 235
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2003
    Messages : 10 235
    Points : 15 532
    Points
    15 532
    Par défaut
    pour suivre les appels AJAX, vous pouvez utiliser l'onglet "Réseau" de la console de développement de votre navigateur. vous pourrez ainsi vérifier les valeurs envoyées au serveur.
    par exemple avec Firefox, faites Ctrl + Maj + E pour ouvrir l'onglet "Réseau".
    https://developer.mozilla.org/fr/doc...ur_r%C3%A9seau

  3. #3
    Membre régulier
    Homme Profil pro
    Administrateur de base de données
    Inscrit en
    Décembre 2011
    Messages
    257
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Administrateur de base de données
    Secteur : Santé

    Informations forums :
    Inscription : Décembre 2011
    Messages : 257
    Points : 76
    Points
    76
    Par défaut 2 requêtes ajax sur le même évènement
    Bonjour,

    j'ai résolu (au moins en partie) mon problème en appelant 2 requêtes ajax sur le même évènements
    je ne sais pas si c'est la meilleur façon de procéder mais bon

    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
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
     
     
    $(document).ready(function() {
     
        var prevent = false;
     
        function getCookie(name) {
            var cookieValue = null;
            if (document.cookie && document.cookie !== '') {
                var cookies = document.cookie.split(';');
                for (var i = 0; i < cookies.length; i++) {
                    var cookie = cookies[i].trim();
                    // Does this cookie string begin with the name we want?
                    if (cookie.substring(0, name.length + 1) === (name + '=')) {
                        cookieValue = decodeURIComponent(cookie.substring(name.length + 1));
                        break;
                    }
                }
            }
            return cookieValue;
        }
     
        $("#site").on("change", function(event){
     
            var csrftoken = getCookie('csrftoken');
     
            // console.log($(this).val());
            // console.log($("#site").data("randomization-url"))
            // console.log(csrftoken)
     
            $.ajax({
                type: "POST",
                // url: '{% url "randomization:stock" %}',
                url: $("#site").data("randomization-url"),
                data: {
                    // csrfmiddlewaretoken: '{{ csrf_token }}',
                    csrfmiddlewaretoken: csrftoken,
                    'site' : $(this).val(),	
                },
                dataType: 'html',
                success: function (data) {
                    // alert(data)
     
                    // code html contenant le message d'alerte 'Insufficient stock'
                    if (data.includes("Insufficient")) {
                        $("#alerte").html(data);
                        $("#randomize").children().remove();
                    }
                    else {
                        // alert(data)
                        $("#alerte").children().remove();
                        $("#randomize").html(data);
                    }
                }
            });
     
            $.ajax({
                type: "POST",
                url: '/randomization/patients/',
                data: {
                    csrfmiddlewaretoken: csrftoken,
                    'site' : $(this).val(),
                },
                dataType: 'html',
                success: function (data) {
                    // alert(data)
                    $("#patients").children().remove();
                    $("#patients").html(data);
                }
            });
     
        });
     
    });

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. [AJAX] Mise-à-jour liste déroulante
    Par timmy1 dans le forum AJAX
    Réponses: 2
    Dernier message: 07/12/2011, 09h09
  2. Mise à jour liste déroulante
    Par BiBloOo dans le forum Langage
    Réponses: 7
    Dernier message: 10/02/2009, 10h09
  3. [Dojo] Mise à jour liste déroulante, AJAX+Struits
    Par laurent_m dans le forum Bibliothèques & Frameworks
    Réponses: 3
    Dernier message: 20/08/2007, 20h21
  4. mise à jour liste déroulante
    Par stéphane_ais2 dans le forum Access
    Réponses: 32
    Dernier message: 09/11/2005, 16h12
  5. Mise à jour listes déroulantes
    Par mr.t dans le forum ASP
    Réponses: 2
    Dernier message: 20/06/2005, 10h02

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo