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 :

[AJAX] Ajax toolkit : Vérification login possible ?


Sujet :

AJAX

  1. #1
    Membre éclairé
    Avatar de betsprite
    Profil pro
    Inscrit en
    Avril 2010
    Messages
    472
    Détails du profil
    Informations personnelles :
    Âge : 37
    Localisation : France

    Informations forums :
    Inscription : Avril 2010
    Messages : 472
    Par défaut [AJAX] Ajax toolkit : Vérification login possible ?
    Bonjour,

    * Après avoir effectué quelques recherches sur l'Ajax toolkit de Microsoft, offrant de nombreux contrôles déjà codés, j'ai eu l'impression qu'il n'existait pas de contrôle permettant de vérifier si un login est disponible après appel via une requête à la BDD (ce qui paraitrait normal étant donné qu'on a besoin de faire appel à la bdd pour vérifier la disponibilité du login entré dans le formulaire donc le contrôle ne pourrait pas être prédéfini ...).

    * J'aurais voulu savoir si il en existait un ou si nous devions le coder nous même en ASP.NET AJAX (avec Web Service ou autres méthodes ... )

    * Aussi, si un contrôle permettant de vérifier le login via de l'AJAX n'existe pas avec l'ajax toolkit, peut-on sans problème faire cohabiter des contrôles de l'ajax toolkit avec du code AJAX en ASP.NET/JQuery (ou javascript) avec handler ou webservice ?

    Je vous remercie !

  2. #2
    Membre Expert
    Avatar de gwyohm
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Octobre 2007
    Messages
    925
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 45
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Octobre 2007
    Messages : 925

  3. #3
    Membre éclairé
    Avatar de betsprite
    Profil pro
    Inscrit en
    Avril 2010
    Messages
    472
    Détails du profil
    Informations personnelles :
    Âge : 37
    Localisation : France

    Informations forums :
    Inscription : Avril 2010
    Messages : 472
    Par défaut
    Bonjour,

    tout d'abord, merci gwyohm pour ta réponse !

    * Je suis allé voir sur le lien et j'avais déjà pu parcourir les différentes possibilités de contrôles avec l'Ajax toolkit, notamment celui que tu me proposes.
    Seulement, celui-ci est un validator qui vérifie côté client la syntaxe et ne fais pas appel à la base pour vérifier si le pseudo entré existe déjà.

    * Je pense qu'il n'y a donc pas de possibilités dans l'ajax toolkit permettant une telle interaction ?

    * Je peux toujours vérifier la disponibilité du pseudo en JQUERY(librairie javascript) avec un Handler, ce qui reviendrait à tout coder moi-même.
    Seulement, je me pose toujours la question suivante :

    * Est-il possible de mélanger dans un même projet du code entièrement fait par moi-même et orienté AJAX avec des contrôles préconçus de l'Ajax toolkit ?

    Je vous remercie !

  4. #4
    Membre Expert
    Avatar de gwyohm
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Octobre 2007
    Messages
    925
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 45
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Octobre 2007
    Messages : 925
    Par défaut
    Citation Envoyé par betsprite Voir le message
    Seulement, celui-ci est un validator qui vérifie côté client la syntaxe et ne fais pas appel à la base pour vérifier si le pseudo entré existe déjà.
    si c'est un validator, et que ça passe par un appel AJAX, je ne vois pas pourquoi quand tu passes dans la méthode serveur de validation tu ne pourrais pas contrôler l'inexistence de ce login en base ; ASP.NET, c'est très loin pour moi, mais il me semble que tu dois pouvoir au moment de la validation faire un appel en base (quitte à dériver la classe et surcharger la méthode de validation... non ?

  5. #5
    Membre éclairé
    Avatar de betsprite
    Profil pro
    Inscrit en
    Avril 2010
    Messages
    472
    Détails du profil
    Informations personnelles :
    Âge : 37
    Localisation : France

    Informations forums :
    Inscription : Avril 2010
    Messages : 472
    Par défaut
    A vrai dire je n'ai pas encore vu ce que pouvait générer comme code l'ajout d'un contrôle ajax toolkit juste en glisser-déposer sur la page...

    Cependant, je pense que le code généré est surtout du javascript et qu'il n'est pas codé de telle sorte à interroger une base (avec des fonctions spécifiques ajax, type : POST/GET, dataType, data, url ...), avec l'url qui est une page ASPX ou un Handler..., et reprendre le code généré par le contrôle reviendrait à l'effacer et recommencer, ce qui serait moins efficace que de commencer à zéro et sans aide de l'ajax toolkit un tel contrôle non ?

  6. #6
    Membre Expert
    Avatar de gwyohm
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Octobre 2007
    Messages
    925
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 45
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Octobre 2007
    Messages : 925
    Par défaut
    Citation Envoyé par betsprite Voir le message
    Cependant, je pense que le code généré est surtout du javascript et qu'il n'est pas codé de telle sorte à interroger une base
    Attention ! côté client, le javascript n'a jamais accès à la base de données et heureusement, cela supposerait d'avoir un compte pour accéder à la base. En revanche, l'exécution d'une requête HTTP via AJAX permet d'appeler le serveur et c'est le serveur qui effectuera la vérification en base.
    Ce que je disais simplement, c'est que le contrôle ValidatorCallout doit vraisemblablement effectuer un appel AJAX (car on n'a pas besoin du serveur pour obtenir la taille d'un texte).

    Après avoir regardé de plus près leur doc:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    <ajaxToolkit:ValidatorCalloutExtender 
        runat="Server"
        ID="PNReqE"
        TargetControlID="PNReq" 
        Width="350px"
        HighlightCssClass="highlight" 
        WarningIconImageUrl="warning.gif"
        CloseImageUrl="close.gif" />
    Le TargetControlID référence un Validator si toi tu défini un CustomValidator et que tu lui donnes l'ID "validator_loginUnicity", tu mettras "validator_loginUnicity" dans TargetControlID. Ensuite toute ta logique de validation (via la bdd) se fera dans le delegate OnServerValidate.
    Théoriquement tu as très peu à faire :
    • définir ton customvalidator
    • implémenter le OnServervalidate
    • mettre un ValidatorCallout
    • le faire pointer sur ton validator

  7. #7
    Membre éclairé
    Avatar de betsprite
    Profil pro
    Inscrit en
    Avril 2010
    Messages
    472
    Détails du profil
    Informations personnelles :
    Âge : 37
    Localisation : France

    Informations forums :
    Inscription : Avril 2010
    Messages : 472
    Par défaut
    Merci beaucoup gwyohm !

    Je viens de comprendre que l'on peut attribuer un validator qui fait appel à la base pour les contrôles de l'ajax toolkit.

    Cependant, en regardant la documentation que vous m'avez fournit, j'ai du mal à comprendre ce que fait le code suivant, même si dans le fond, je comprends qu'il y a un validator côté client et un validator côté server... :
    (Ainsi, la compréhension étant vague, j'ai du mal à voir ou placer mon appel à la bdd)

    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
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    <html>
    <head>
        <script language="VB" runat="server">
     
    // Fonction appelé au click du bouton de la page :
     
            Sub ValidateBtn_OnClick(sender As Object, e As EventArgs)
                If (Page.IsValid) Then
                  lblOutput.Text = "Page is Valid!"
               Else
                  lblOutput.Text = "Page is InValid! :-("
               End If
            End Sub
     
     
        Sub ServerValidate (sender As Object, value As ServerValidateEventArgs)
            Dim num As Integer
     
            If Integer.TryParse(value.Value, num) Then
                value.IsValid = (num Mod 2 = 0)
     
            Else 
                value.IsValid = false
            End If
        End Sub
     
       </script>
     
    </head>
    <body>
     
    <h3>CustomValidator Example</h3>
    <br />
     
    <form runat="server">
     
    // simple label :
     
        <asp:Label id=lblOutput runat="server" Text="Enter an even number:" /><br>
     
        <p>
     
    // Pour la saisie :
     
        <asp:TextBox id=Text1 runat="server" />
     
    // Définition des validators :
     
        <asp:RequiredFieldValidator id="RequiredFieldValidator1" runat="server"
            ControlToValidate="Text1"
            ErrorMessage="Please enter a number"
            Display="Dynamic">
        </asp:RequiredFieldValidator>
     
        <asp:CustomValidator id="CustomValidator1" runat="server"
            ControlToValidate="Text1"
    	    ClientValidationFunction="ClientValidate"
            OnServerValidate="ServerValidate"
            Display="Static">
               Not an even number!
        </asp:CustomValidator>
     
        <p>
     
    // Buuton à cliquer pour vérifier :
     
        <asp:Button text="Validate" onclick="ValidateBtn_OnClick" runat="server" />
     
        <script language="javascript">
     
           function ClientValidate(source, arguments)
           {
              // even number?
              if (arguments.Value%2 == 0)
                arguments.IsValid = true;
              else
                arguments.IsValid = false;
           }
     
        </script>
     
    </form>
    </body>
    </html>
    Merci encore !

  8. #8
    Membre Expert
    Avatar de gwyohm
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Octobre 2007
    Messages
    925
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 45
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Octobre 2007
    Messages : 925
    Par défaut
    Si le code que tu soumets fonctionne bien (qu'il n'accepte que les nombres pairs, et que sinon tu as un message d'erreur, géré par un postback), alors ca doit être qqch comme
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
     
        Sub ServerValidate (sender As Object, value As ServerValidateEventArgs)
            Dim login As String
            Dim count As Integer
            login = value.Value;
            ' faisons une requete en base type "select count(0) from t_user where usr_login = '" &  login  & "'"
           value.IsValid = (count  = 0)
        End Sub
       </script>

  9. #9
    Membre Expert
    Avatar de gwyohm
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Octobre 2007
    Messages
    925
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 45
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Octobre 2007
    Messages : 925
    Par défaut
    Citation Envoyé par betsprite Voir le message
    Cependant, en regardant la documentation que vous m'avez fournit, j'ai du mal à comprendre ce que fait le code suivant, même si dans le fond, je comprends qu'il y a un validator côté client et un validator côté server...
    Et pour répondre à cette question (encore une fois, mes souvenirs d'ASP.NET sont lointains et je travaillais en C# + avec les aspx.cs (classe dédiée à chaque aspx),
    Le controle CustomValidator1 valide le Text1, au moyen de la methode serveur ServerValidate. Le framework .net en interprétant la page, va remplacer tous ces controles serveurs par des input HTML, et ajouter du code javascript pour faire des submits automatiques... et passer par tes méthodes au moyen de son framework interne. Mais bien sur ce que je te raconte est très approximatif, va plutot voir les tutos, faqs et forums developpez.com dédiés à ASP.NET

  10. #10
    Membre éclairé
    Avatar de betsprite
    Profil pro
    Inscrit en
    Avril 2010
    Messages
    472
    Détails du profil
    Informations personnelles :
    Âge : 37
    Localisation : France

    Informations forums :
    Inscription : Avril 2010
    Messages : 472
    Par défaut
    Ok ! mais je ne comprends pas bien comment faire si j'ai juste un validator pour le server, car le click sur le bouton appel la fonction

    Mais n'appelle pas la fonction ...

    Et j'ai du mal à comprendre, malgré la doc les paramètres d'entrée de cette seconde fonction, à savoir :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    sender As Object, value As ServerValidateEventArgs
    Enfin l'événement déjà est appelé par quelle action ?

    Merci !

  11. #11
    Membre Expert
    Avatar de gwyohm
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Octobre 2007
    Messages
    925
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 45
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Octobre 2007
    Messages : 925
    Par défaut
    je suis désolé mais on risque de tourner en rond et de tester des trucs au hasard. Tu auras plus de compétences et d'explications en demandant de l'aide côté ASP.NET...

    Mais n'hésite pas à revenir quand tu as un souci javascript

  12. #12
    Membre éclairé
    Avatar de betsprite
    Profil pro
    Inscrit en
    Avril 2010
    Messages
    472
    Détails du profil
    Informations personnelles :
    Âge : 37
    Localisation : France

    Informations forums :
    Inscription : Avril 2010
    Messages : 472
    Par défaut
    Ok ! merci beaucoup déjà gwyohm pour ton aide

    Juste un dernier point pour l'éclaircissement du code que j'avais mis :

    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
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    <html>
    <head>
        <script language="VB" runat="server">
     
    // Fonction appelé au click du bouton de la page :
     
            Sub ValidateBtn_OnClick(sender As Object, e As EventArgs)
                If (Page.IsValid) Then
                  lblOutput.Text = "Page is Valid!"
               Else
                  lblOutput.Text = "Page is InValid! :-("
               End If
            End Sub
     
     
        Sub ServerValidate (sender As Object, value As ServerValidateEventArgs)
            Dim num As Integer
     
            If Integer.TryParse(value.Value, num) Then
                value.IsValid = (num Mod 2 = 0)
     
            Else 
                value.IsValid = false
            End If
        End Sub
     
       </script>
     
    </head>
    <body>
     
    <h3>CustomValidator Example</h3>
    <br />
     
    <form runat="server">
     
    // simple label :
     
        <asp:Label id=lblOutput runat="server" Text="Enter an even number:" /><br>
     
        <p>
     
    // Pour la saisie :
     
        <asp:TextBox id=Text1 runat="server" />
     
    // Définition des validators :
     
        <asp:RequiredFieldValidator id="RequiredFieldValidator1" runat="server"
            ControlToValidate="Text1"
            ErrorMessage="Please enter a number"
            Display="Dynamic">
        </asp:RequiredFieldValidator>
     
        <asp:CustomValidator id="CustomValidator1" runat="server"
            ControlToValidate="Text1"
    	    ClientValidationFunction="ClientValidate"
            OnServerValidate="ServerValidate"
            Display="Static">
               Not an even number!
        </asp:CustomValidator>
     
        <p>
     
    // Buuton à cliquer pour vérifier :
     
        <asp:Button text="Validate" onclick="ValidateBtn_OnClick" runat="server" />
     
        <script language="javascript">
     
           function ClientValidate(source, arguments)
           {
              // even number?
              if (arguments.Value%2 == 0)
                arguments.IsValid = true;
              else
                arguments.IsValid = false;
           }
     
        </script>
     
    </form>
    </body>
    </html>
    Comment pourrait-on le réduire pour n'avoir que le strict minimum pour ce que je souhaite faire ? (car j'ai l'impression que le javascript par exemple fait exactement la même chose que la fonction définit ServerValidate...
    J'ai donc du mal à voir vraiment ce qui est indispensable pour le fonctionnement du validator côté server du reste.

    Sinon je vais suivre tes conseils et demander un coup de pouce du côté ASP.NET

    Merci encore !

  13. #13
    Membre Expert
    Avatar de gwyohm
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Octobre 2007
    Messages
    925
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 45
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Octobre 2007
    Messages : 925
    Par défaut
    Non,
    Il faut que javascript fasse appel à la fonction ServerValidate via AJAX, à mon avis tu es confu car ton code serveur et client sont dans le même fichier ; mais quand tu regardes le source généré, tes fonctions vb n'apparaissent pas, elles sont utilisées par le serveur uniquement dans ses compilations internes.
    En ajoutant le ValidatorCallout, tu ne feras que demander à ta page de valider un tout petit bout du formulaire

  14. #14
    Membre éclairé
    Avatar de betsprite
    Profil pro
    Inscrit en
    Avril 2010
    Messages
    472
    Détails du profil
    Informations personnelles :
    Âge : 37
    Localisation : France

    Informations forums :
    Inscription : Avril 2010
    Messages : 472
    Par défaut
    Mais comment vois-tu que le javascript appelle la fonction ServerValidate ?

    Moi j'ai l'impression que le javascript :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    <script language="javascript">
     
           function ClientValidate(source, arguments)
           {
              // even number?
              if (arguments.Value%2 == 0)
                arguments.IsValid = true;
              else
                arguments.IsValid = false;
           }
     
        </script>
    Test si l'argument (en l'occurence ce qui a été entré dans le textbox ici non ?) est pair (dans ce cas on a arguments.IsValidate = true ... d'ailleurs c'est quoi la méthode IsValid sur l'argument ? ça veut juste dire qu'on considère que ce qui a été entré dans le textbox est valide ?) ou s'il ne l'est pas (arguments.IsValide = false).

    Et le code de la fonction ServerValidate :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    Sub ServerValidate (sender As Object, value As ServerValidateEventArgs)
            Dim num As Integer
     
            If Integer.TryParse(value.Value, num) Then
                value.IsValid = (num Mod 2 = 0)
     
            Else 
                value.IsValid = false
            End If
        End Sub
    Si je comprends bien le TryParse ..., affecte à value (texte entré dans le textbox à nouveau) soit "true" (si nombre entré pair) soit "false" (si nombre entré impair).

    J'ai du mal à voir la différence entre les deux malgré tes explications désolé :s

    Merci !

Discussions similaires

  1. [AJAX] ajax et la vérification des versions des pages.
    Par kaayna dans le forum Général JavaScript
    Réponses: 6
    Dernier message: 20/06/2008, 09h42
  2. [AJAX] [Ajax Control Toolkit] ModalPopup + GridView(asp.net)
    Par nkonito dans le forum Général JavaScript
    Réponses: 1
    Dernier message: 27/01/2008, 21h28
  3. [AJAX] Ajax .NET : Le toolkit Calendar
    Par DevAjax dans le forum Général JavaScript
    Réponses: 2
    Dernier message: 02/04/2007, 10h30
  4. Ajax Control Toolkit, info ou intox?
    Par gniouf2k6 dans le forum ASP.NET
    Réponses: 3
    Dernier message: 15/02/2007, 08h59
  5. [AJAX] AJAX / PHP login
    Par forst dans le forum Général JavaScript
    Réponses: 4
    Dernier message: 06/12/2006, 18h34

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