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 :

retour de fonction ( return) en javascript


Sujet :

jQuery

  1. #1
    Membre habitué
    Inscrit en
    Mai 2010
    Messages
    10
    Détails du profil
    Informations forums :
    Inscription : Mai 2010
    Messages : 10
    Par défaut retour de fonction ( return) en javascript
    index.html

    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
    <html>
        <head>
            <title>Myform</title>
            <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
        </head>
        <body>
            <form method="POST">
                <div>
                  <p><span>Username :</span>&nbsp;<input id="user" type="text"/><label id="labeluser"></label></p><br />
                  <p><span>Password :</span>&nbsp;<input id="pass" type="password"/><label id="labelpass"></label></p><br />
                  <p><span>&nbsp;</span><input id="sb" type="submit" value="Submit" /></p>
                </div>
             </form>
            <script type="text/javascript" src="jquery-1.6.4.js"></script>
            <script type="text/javascript" src="ajaxcall.js"></script>
        </body>
    </html>
    usercheck.php

    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
    <?php
    $server = "localhost";
    $username = "root";
    $password = "";
    $database_name = "tutorial";
     
    mysql_connect($server, $username, $password)or die("Server Error");
    mysql_select_db($database_name)or die("Database Error");
     
    $user = $_POST['user'];
     
    $query = "SELECT username FROM users WHERE username = '$user'";
     
    $result = mysql_num_rows(mysql_query($query));
     
    echo $result;
    ?>
    ajaxcall.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
    $(document).ready(function()
    {
        var user    = $('#user');
        var lu      = $('#labeluser');
        var sb      = $('#sb');
        var bool;
     
        function checkusername()
        {
            if(user.val() == '')
            {
                lu.html("&nbsp&nbspUsername Required!"); 
                return false;
            }
            else
            {
                $.post ('checkuser.php',
                        {
                            user:user.val()
                        },
                        function (response)
                        {
                            if(response == 1)
                            {
                                bool =  false;
                                lu.html("&nbsp&nbspUsername Unavailable!");
                            } 
                            else if(response == 0)
                            {
                                bool =  true;
                                lu.html("&nbsp&nbspUsername Available");
                            } 
                        }
                        );
                   return bool;
            }
     
        }
        sb.click(checkusername);
     
    });
    script SQL

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    CREATE DATABASE `tutorial` ;
     
    CREATE TABLE `tutorial`.`users` (
    `id` INT( 10 ) NOT NULL AUTO_INCREMENT PRIMARY KEY ,
    `username` VARCHAR( 25 ) NOT NULL ,
    `password` VARCHAR( 25 ) NOT NULL
    ) ENGINE = InnoDB;
    Bonsoir;
    je rencontre un problème au niveau de la fonction
    checkusername() elle retourne toujours bool comme true ce qui bug mon script ; si je remplace return bool par return false mon script marche sauf que le boutton submit n'est plus cliquable
    ce qui ne me permet plus de verifier un autre username.
    aidez moi à comprendre et resoudre mon erreur SVP.
    Fichiers attachés Fichiers attachés

  2. #2
    Membre éprouvé
    Homme Profil pro
    Développeur Web
    Inscrit en
    Septembre 2011
    Messages
    89
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : Philippines

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Septembre 2011
    Messages : 89
    Par défaut
    C'est une requête Ajax, donc asymétrique, la fonction callback va être effectuée lors de la réponse du serveur, c'est à dire après ton "return bool;".

  3. #3
    Membre habitué
    Inscrit en
    Mai 2010
    Messages
    10
    Détails du profil
    Informations forums :
    Inscription : Mai 2010
    Messages : 10
    Par défaut
    Bonsoir merci de m'avoir répondu.
    Je n'ai pas bien compris votre réponse, auriez-vous une solution à me proposer?

  4. #4
    Membre éprouvé
    Homme Profil pro
    Développeur Web
    Inscrit en
    Septembre 2011
    Messages
    89
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : Philippines

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Septembre 2011
    Messages : 89
    Par défaut
    Ajax fonctionne de manière asymétrique, ce qui veut dire que lors d'une requête, on envoie une demande au serveur et en l'attendant, le script suit son cours.

    En l'occurence après votre "$.post", le return n'attend pas la réponse du serveur pour s'exécuter. Tout le traitement se passe dans la fonction callback, vous pouvez essayer quelque chose de ce style :

    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
     
    $(document).ready(function()
    {
    	var user = $('#user');
    	var lu = $('#labeluser');
    	var sb = $('#sb');
     
    	function checkusername()
    	{
    		if(user.val() == '')
    		{
    			lu.html("&nbsp&nbspUsername Required!"); 
    		}
    		else
    		{
    			sb.attr('disabled', true);
    			$.post (
    				'checkuser.php',
    				{
    					user:user.val()
    				},
    				function (response)
    				{
    					if(response == 1)
    					{
    						lu.html("&nbsp&nbspUsername Unavailable!");
    						sb.removeAttr('disabled');
    					} 
    					else if(response == 0)
    					{
    						lu.html("&nbsp&nbspUsername Available");
    						$(this.form).submit();
    					}
    				}
    			);
    			return false;
    		}
     
    	}
    	sb.click(checkusername);
     
    });

    PS. Il serait bon d'indenter votre code.

    PS2. Il est préférable de déclencher l'événement sur sur le onSubmit du form plutôt que sur le click du bouton car dans ce second cas, presser entrée sur l'un des champs texte passe au travers votre vérification.

  5. #5
    Membre expérimenté
    Avatar de beegees
    Homme Profil pro
    Développeur Web
    Inscrit en
    Mars 2004
    Messages
    3 610
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 50
    Localisation : Belgique

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : Enseignement

    Informations forums :
    Inscription : Mars 2004
    Messages : 3 610
    Par défaut
    Ajax fonctionne de manière asymétrique,
    je dirais plutôt de manière asynchrone.

  6. #6
    Membre éprouvé
    Homme Profil pro
    Développeur Web
    Inscrit en
    Septembre 2011
    Messages
    89
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : Philippines

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Septembre 2011
    Messages : 89
    Par défaut
    En effet... Le pire c'est que j'ai utilisé le mauvais adjectif dans mes deux posts.

  7. #7
    Membre expérimenté
    Avatar de beegees
    Homme Profil pro
    Développeur Web
    Inscrit en
    Mars 2004
    Messages
    3 610
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 50
    Localisation : Belgique

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : Enseignement

    Informations forums :
    Inscription : Mars 2004
    Messages : 3 610
    Par défaut
    Citation Envoyé par MrPringle Voir le message
    En effet... Le pire c'est que j'ai utilisé le mauvais adjectif dans mes deux posts.
    Pas très grave, tu as voulu aidé, c'est le principal

    Merci

    beegees

  8. #8
    Expert confirmé
    Avatar de sekaijin
    Homme Profil pro
    Urbaniste
    Inscrit en
    Juillet 2004
    Messages
    4 205
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 61
    Localisation : France, Yvelines (Île de France)

    Informations professionnelles :
    Activité : Urbaniste
    Secteur : Santé

    Informations forums :
    Inscription : Juillet 2004
    Messages : 4 205
    Par défaut
    il te suffit de faire un appel ajax synchrone
    c'est un paramètre de l'appel à fournir

    JQuery redéfinit (encapsule XMLHttpRequest) et donc la façon de faire un appel synchrone ou asynchrone dépend de JQuery

    A+JYT

Discussions similaires

  1. code retour d'une fonction return 0 ?
    Par BoxOfTheNight dans le forum C
    Réponses: 6
    Dernier message: 11/08/2014, 11h10
  2. Réponses: 6
    Dernier message: 28/06/2014, 09h30
  3. fonction return () avec retour de plusieurs valeurs
    Par nuphius dans le forum Langage
    Réponses: 4
    Dernier message: 06/01/2007, 17h44
  4. [POO] Retour de données par une fonction (return)
    Par webrider dans le forum Langage
    Réponses: 6
    Dernier message: 26/08/2006, 21h49
  5. [String] équivalent de la fonction eval() en javascript
    Par jeyce dans le forum API standards et tierces
    Réponses: 5
    Dernier message: 01/09/2004, 08h42

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