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 :

jQuery Ajax : afficher du HTML ET récupérer une donnée en même temps ?


Sujet :

AJAX

  1. #1
    Invité
    Invité(e)
    Par défaut jQuery Ajax : afficher du HTML ET récupérer une donnée en même temps ?
    Bonjour,

    J'utilise Ajax avec jQuery.

    Je sais :
    • afficher du code HTML (dataType: 'html')
    • OU récupérer des données json (dataType: 'json')

    • MAIS PAS les deux à la fois !



    Je souhaite, via Ajax :
    • traiter une formulaire -> OK
    • afficher les résultats HTML -> OK
    • récupérer une données (booléen) pour effectuer une autre action -> ??


    Voici un petit exemple (simplifié) :

    1/ fichier traitement-ajax.php :
    Code php : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    <?php
    $variable = $_POST['variable'];
     
    // ICI : traitement PHP + un tas d'autres trucs... qu'on ne peut pas mettre dans une simple variable PHP
     
    if( $variable == 'blabla' )
    {
    	echo '<b>Un éléphant rose</b>'; 	// affichage de code HTML + un tas d'autres trucs... qu'on ne peut pas mettre dans une simple variable PHP
    	$test = false; 	// booléen
    } else {
    	echo '<b>Une panthère noire</b>'; 	// affichage de code HTML + un tas d'autres trucs... qu'on ne peut pas mettre dans une simple variable PHP
    	$test = true; 	// booléen
    }
    // QUESTION : comment récupérer $test pour le traiter en jQuery (et exécuter une autre action) ?
    2/ jQuery ajax
    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
    24
    25
    26
    27
    28
    	// -------------------------------------
    	// TRAITER via Ajax
    	$('#bouton_Valider').on( 'click', function(event){
    		var variable = $('#variable').val();	// on récupère la valeur
    		// -----------------
    		var texthtml 			= '';
    		$.ajax({
    			type:				'post',
    			url:				'traitement-ajax.php',
    			data:				'variable='+variable,	// on transmet la valeur
    			dataType:			'html',				// ICI, en HTML
    			cache:			false,
    			success:			function( texthtml ){
    				// -----------------
    				$('#box_Reaffichage_Resultat').html(texthtml); // on affiche le résultat dans une div
    				// -----------------
    				// ICI, je voudrais pouvoir récupérer le contenu de la donnée PHP $test
    				// Comment faire ??
    				var retour_test = ??????????;
     
    				if( retour_test ){ alert('OK : on peut lancer une autre action'); }
    				else { alert('NON'); }
    				// -----------------
    				return false; // arrêt de la propagation de l'évènement dans le DOM
    			}
    		});	
    	});
    	// -------------------------------------
    La question est notée dans le code : "comment récupérer $test (PHP) pour le traiter en jQuery (et exécuter une autre action) ?"

    Je ne sais pas si c'est possible, ni quelle pourrait être l'alternative...

    Merci.
    Dernière modification par Invité ; 24/03/2016 à 16h03.

  2. #2
    Modérateur

    Avatar de NoSmoking
    Homme Profil pro
    Inscrit en
    Janvier 2011
    Messages
    16 959
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Isère (Rhône Alpes)

    Informations forums :
    Inscription : Janvier 2011
    Messages : 16 959
    Points : 44 122
    Points
    44 122
    Par défaut
    Bonjour,
    pour moi le plus cohérent reste de traiter cela via un objet JSON
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    {
        "statut" : "OK",
        "html" : "<h1>Le titre qui va bien</h1>"
    }

  3. #3
    Invité
    Invité(e)
    Par défaut
    Merci NoSmoking,
    mais si c'était aussi simple, je pense que j'aurais trouvé tout seul...

    Comme je l'ai écrit, c'est un exemple simplifié.

    Je ne peux pas mettre TOUT le code HTML dans une variable PHP (j'ai des appels à des fonctions, des INCLUDES, et autres bricoles dans le fichier PHP).

  4. #4
    Modérateur

    Avatar de NoSmoking
    Homme Profil pro
    Inscrit en
    Janvier 2011
    Messages
    16 959
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Isère (Rhône Alpes)

    Informations forums :
    Inscription : Janvier 2011
    Messages : 16 959
    Points : 44 122
    Points
    44 122
    Par défaut
    JSON ou HTML il te faut choisir mais tu peux également te créer ta propre balise
    Code php : Sélectionner tout - Visualiser dans une fenêtre à part
    echo '<test data-retour = "false"/>';
    que tu mets en début de ton retour par exemple.

  5. #5
    Invité
    Invité(e)
    Par défaut
    C'est en effet une idée à creuser...

    [EDIT] J'ai opté pour cette astuce !


    Dans le fichier PHP, si le traitement est OK, j'ajoute au code HTML :
    Code php : Sélectionner tout - Visualiser dans une fenêtre à part
    			<div class="msgOK_div" id="idAddClientCheck" data-ok="OK"><?php adm_affiche_MsgOK($formMsgOK_Ajouter); ?></div>
    Dans le jQuery, je récupère l'info :
    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
    		var texthtml 			= '';
    		$.ajax({
    			type:				'post',
    			url:				'..................................../form-traiter-ajax.php',
    			data:				ClientData,
    			dataType:			'html',
    			cache:				false,
    			success:			function( texthtml ){
    				// -------------
    				// Affichage HTML
    				$('#box........................._ajax').html(texthtml);	// Affichage HTML
    				// -------------
    				// Récupération : si "OK" -> on continue l'action
    				if( $('#idAddClientCheck').attr('data-ok') == 'OK' )
    				{
    					//........... on continue l'action...............
    				}
    				// -------------
    				return false; // arrêt de la propagation de l'évènement dans le DOM
    			}
    Dernière modification par Invité ; 24/03/2016 à 22h31.

  6. #6
    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
    Citation Envoyé par jreaux62 Voir le message
    Je ne peux pas mettre TOUT le code HTML dans une variable PHP (j'ai des appels à des fonctions, des INCLUDES, et autres bricoles dans le fichier PHP).
    juste une question pour ma curiosité et pour mon cerveau binaire qui dit que soit tout est possible soit rien (donc si tu n'as pas le temps de m'expliquer, ne t'embête pas à me répondre)

    pourquoi tu ne peux pas mettre les données dans une variable PHP ? tu as essayé les fonctions de gestion de contenu comme http://php.net/ob_start et autres ?

Discussions similaires

  1. récupérer une donnée html dans une jsp
    Par obigero dans le forum Servlets/JSP
    Réponses: 4
    Dernier message: 01/02/2011, 16h01
  2. Récupérer une donnée de formulaire d'une page HTML
    Par drake56 dans le forum Windows Forms
    Réponses: 14
    Dernier message: 11/12/2009, 10h23
  3. [HTML] comment récupérer une ligne d'un tableau avec HTML?
    Par jaafarerraji dans le forum Balisage (X)HTML et validation W3C
    Réponses: 5
    Dernier message: 01/10/2007, 00h21
  4. [SQL] Afficher du HTML extrait d'une BD
    Par Linaa dans le forum PHP & Base de données
    Réponses: 9
    Dernier message: 20/04/2006, 11h13
  5. [html/javascript] récupérer une variable
    Par LE NEINDRE dans le forum Général JavaScript
    Réponses: 3
    Dernier message: 02/12/2005, 15h42

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