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

jQuery Discussion :

function callback qui ne fonctionne pas


Sujet :

jQuery

  1. #1
    Membre du Club
    Homme Profil pro
    Autre
    Inscrit en
    Août 2017
    Messages
    63
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 45
    Localisation : France, Seine Maritime (Haute Normandie)

    Informations professionnelles :
    Activité : Autre

    Informations forums :
    Inscription : Août 2017
    Messages : 63
    Points : 45
    Points
    45
    Par défaut function callback qui ne fonctionne pas
    Bonjour à tous

    J'ai de nouveau un problème et viens vous demander de l'aide.
    Je ne savais pas trop où poster ce message car j'utilise le javascript et jquery

    J'explique se que j'essaye de faire.
    j'ai créé une première fonction pour afficher un popup responsive.
    Code javascript : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    function popup(id, x, y, z){
    	var el = document.getElementById(id);
    	var html = el.innerHTML;
    	document.getElementById("popup").innerHTML = html.replace("#NAME#", name);
    	...
    }
    a l'origine le code html du popup etait "caché" dans ma page dans un div avec un display: none;

    mais quans on regarde le code source html, ouuu là là, caca
    j'ai créé un fichier php qui me retourne le template en fonction du type de popup que je souhaite afficher.
    pour se faire j'ai fait ceci

    Code javascript : 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
    function get_template(mode, get_tpl) {
    	$.ajax({
    		url: 'popup.php',
    		type: 'GET',
    		data: 'mode='+mode,
    		success: get_tpl
    	});
    	return reponse;
    }
     
    function popup_template(reponse){
    	callback(reponse);
    }
     
    var template = get_template('message', popup_template));
    alert(template //LA CA FONCTIONNE
    function popup(id, x, y, z){
    	var el = document.getElementById(id);
    	var template = get_template('message', popup_template));
    	alert(template //LA CA FONCTIONNE PAS
    	document.getElementById("popup").innerHTML = html.replace("#NAME#", name);
    	...
    }

    comme j'ai indiqué dans le code, losque je test l'extraction du template en dehos de ma fonction popup() ca fonctionne l'alert me retourne bien le squelette html, par contre dans la fonction popup l'alert ne fonctionne pas.

    Quelqu'un aurait une idée?

    Merci

  2. #2
    Expert confirmé Avatar de Toufik83
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Janvier 2012
    Messages
    2 405
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : Suisse

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Janvier 2012
    Messages : 2 405
    Points : 4 841
    Points
    4 841
    Par défaut
    Salut,

    je pense que tu as un problème de synchronisation, vu que $.ajax est une fonction asynchrone, javascript n'attendra pas la fin d'ajax.

    pour résoudre ça, essaie d'utiliser .done au lieu de success
    Code js : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
     
    function get_template(mode, get_tpl) {
    	$.ajax({
    		url: 'popup.php',
    		type: 'GET',
    		data: 'mode='+mode
    	})
            .done(function(data){
                console.log("data :"+data);
               /* Lance ta fonction get_tpl ici */
            });
    }

  3. #3
    Membre du Club
    Homme Profil pro
    Autre
    Inscrit en
    Août 2017
    Messages
    63
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 45
    Localisation : France, Seine Maritime (Haute Normandie)

    Informations professionnelles :
    Activité : Autre

    Informations forums :
    Inscription : Août 2017
    Messages : 63
    Points : 45
    Points
    45
    Par défaut
    merci pour ta réponse.

    j'ai réussi à faire ce que je voullais en contournant mon probleme

    Code javascript : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    function popup(mode, arg1, arg2, name, id){
    	var html = '';
     
    	$.ajax({
    		url: 'popup.php',
    		type: 'GET',
    		data: 'mode='+mode,
    		async:false,
    		success:function(reponse){
     
    			html = reponse;
    		}
    	});
    	....

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

Discussions similaires

  1. Function de blocage qui ne fonctionne pas
    Par bndd24 dans le forum Langage
    Réponses: 3
    Dernier message: 19/04/2016, 21h29
  2. Jquery/AJAX function click qui ne fonctionne pas.
    Par prome dans le forum jQuery
    Réponses: 2
    Dernier message: 12/03/2009, 12h57
  3. function javascript qui ne fonctionne pas dans la balise <body>
    Par typikal dans le forum Général JavaScript
    Réponses: 3
    Dernier message: 01/04/2008, 16h45
  4. CREATEFILEMAPPING qui ne fonctionne pas???
    Par Jasmine dans le forum MFC
    Réponses: 2
    Dernier message: 06/01/2004, 19h33
  5. UNION qui ne fonctionne pas
    Par r-zo dans le forum Langage SQL
    Réponses: 7
    Dernier message: 21/07/2003, 10h04

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