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 :

Utilisation de la méthode $post


Sujet :

jQuery

  1. #1
    Membre habitué Avatar de Pecose
    Homme Profil pro
    Batiment
    Inscrit en
    Février 2013
    Messages
    310
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 37
    Localisation : France, Alpes Maritimes (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Batiment
    Secteur : Bâtiment

    Informations forums :
    Inscription : Février 2013
    Messages : 310
    Points : 194
    Points
    194
    Par défaut Utilisation de la méthode $post
    Bonjour tout le monde.
    Voila mon petit problème:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    var message = Test.call();
    $('#id').html(message);
    dans la classe Test:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    static call(){
    	$.post(this.php, { 1:"get" }, function(data){
    		return data;
    	});
    }
    et le fichier php:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    if(isset($_POST["1"]) AND $_POST["1"] == "get"){
            /*Code qui affecte une base de donnée*/
    	echo "Bonjour de php";
    }
    Le "Code qui affecte une base de donnée" fonctionne.
    Par contre lorsque j'affiche "message" il est écrit "undefined"
    Si quelqu'un comprend pourquoi, merci de votre aide.
    Des jours c'est facile, des jours c'est pas facile, mais c'est jamais le même jour.

  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,
    Si quelqu'un comprend pourquoi,
    la méthode est asynchrone et de ce fait les données ne sont disponibles qu'au retour de la requête.
    Je pense qu'il faudrait que tu prennes quand même le temps de lire la documentation, tout est pratiquement dedans

    jQuery.post()

    bonus :
    Comprendre les mécanismes d'AJAX

  3. #3
    Membre habitué Avatar de Pecose
    Homme Profil pro
    Batiment
    Inscrit en
    Février 2013
    Messages
    310
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 37
    Localisation : France, Alpes Maritimes (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Batiment
    Secteur : Bâtiment

    Informations forums :
    Inscription : Février 2013
    Messages : 310
    Points : 194
    Points
    194
    Par défaut
    J'ai essayer ça:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    static call(){
    	var posting = $.post(this.php, { 1:"get"});
    	posting.done(function(data) {
    		return data;
    	});
    }
    mais j'imagine que la fonction se termine avant le "done".
    J'ai pas bien compris ce que je devais faire pour régler le problème.
    Je dois utiliser un setTimeout?
    Ça me parait pas très propre.

    Il doit bien y avoir un moyen de bloquer la fonction le temps que le serveur me renvoie ce que je lui ai demander, non?

    Bon, apparemment il n'existe pas d’équivalent à une fonction "sleep" en javascript à cause de la structure même du langage.
    Du coup je vois pas du tout comment résoudre mon problème.

    -SUITE ET FIN-

    C'est bon j'ai trouver!
    La réponse est ici: JQuery Ajax Synchrone
    Et voila ce que j'ai fait:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    static call(){
    	var message = "";
    	$.ajax({
            url: this.php,
            global: false,
            type: 'POST',
            data: {1:"get"},
            async: false,
            success: function(data) {
            	message = data;
        	}
        });
    	return message;
    }
    Et avec ça:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    var message = Test.call();
    $('#id').html(message);
    Et là c'est nickel.

    Merci pour votre aide.
    Des jours c'est facile, des jours c'est pas facile, mais c'est jamais le même jour.

  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
    Pourquoi ne pas respecter le caractère asynchrone d'Ajax ?

    Tu pourrais passer à la méthode Test.call un paramètre qui pourrait être l'ID de l'élément à renseigner ou encore une fonction « callback » à exécuter en retour de requête.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    static call(param) {
        var posting = $.post(this.php, {
            1: "get"
        });
        posting.done(function(data) {
            $(param).html(data);
        });
    }
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    static call(callback) {
        var posting = $.post(this.php, {
            1: "get"
        });
        posting.done(function(data) {
            callback(data);
        });
    }
    avec un appel, quelque chose comme
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    Test.call(function(data) {
        $('#id').html(data);
    });
    Tu resterais plus dans l'esprit de ce qui se fait dans le langage !

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

Discussions similaires

  1. Utilisation de cURL avec la méthode POST
    Par redhad dans le forum Langage
    Réponses: 2
    Dernier message: 30/06/2016, 01h11
  2. [2.x] Formulaire n'utilisant pas la méthode POST
    Par iKass dans le forum Symfony
    Réponses: 11
    Dernier message: 30/08/2012, 17h07
  3. forcer l'utilisation de la méthode POST <h:form..
    Par ii.abbassi dans le forum JSF
    Réponses: 18
    Dernier message: 17/08/2010, 16h59
  4. Réponses: 0
    Dernier message: 26/02/2009, 19h36
  5. Formulaire utilisant la méthode POST + popup
    Par Hell dans le forum Balisage (X)HTML et validation W3C
    Réponses: 5
    Dernier message: 27/10/2004, 13h34

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