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

Développement Web avec .NET Discussion :

création d'un formulaire de login jquery mobile avec utilisation d'une bdd sql server , web service asp.net


Sujet :

Développement Web avec .NET

  1. #1
    Membre à l'essai
    Femme Profil pro
    Étudiant
    Inscrit en
    Mai 2012
    Messages
    17
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : Maroc

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Mai 2012
    Messages : 17
    Points : 10
    Points
    10
    Par défaut création d'un formulaire de login jquery mobile avec utilisation d'une bdd sql server , web service asp.net
    Bonjour
    Je travaille sur un projet de gestion de flottes en ASP .net. Je suis en train de développer une interface de login en jquery mobile et je dois utiliser un web service asp.net (.asmx) et ajax JSON pour le transfert des données.
    voilà mon code jquery
    fichier login.htm
    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
     
    <!DOCTYPE html >
    <html>
    	<head>
    		<title>Login</title>
     
    		<meta name="viewport" content="width=device width,initial-scale=1"/>
    		<link rel="stylesheet" href="http://code.jquery.com/mobile/1.3.0-beta.1/jquery.mobile-1.3.0-beta.1.min.css" />
    	        <script src="http://code.jquery.com/jquery-1.8.3.min.js"></script>
    	        <script src="http://code.jquery.com/mobile/1.3.0-beta.1/jquery.mobile-1.3.0-beta.1.min.js"></script>
                    <script type="text/javascript">
                        $.document.ready(function () {
                        });
     
    			function callservice(){
    				$.Ajax({
    					type:"Post",
    					contentType: "application/json; charset=utf-8",
    					url: "../authentification.asmx/Authentifier",
    					//data:"{email:"+$('#email').val()+", password:"+$('#password').val()+"}",
                        data:"{}",
    					datatype:"JSON",
    					Success:OnSuccessCall(),
                        erreur:OnErreurCall()
    				        });
                       }
                       function OnSuccessCall(response) {
                       $("#divResponse").text(response.d);
     
     
                   }
                   function OnErreurCall(response) {
                       $("#divResponse").text(response.status+"  "+response.statustext);
     
     
                   }
     
         		</script>
    	</head>
    	<body>
    		<div data-role="page" id="login" data-theme="b">
    			<div data-role="header">
            			<h1>Login</h1>
        			</div>
    				 <!-- start content -->
    			<div data-role="content" data-inset="true">	
     
            			<form name="loginform" id="formulaire" >
    					<fieldset >
                				<label for="email">Email:</label>
                				<input type="email" name="email" id="email" value=""  />
    					<label for="password">Password:</label>
                				<input type="password" name="password" id="password" value="" />
    					        <input type="button" id="btnLogin"  value="Login"  onclick="callservice();"/>
     
    					</fieldset>
     
            			</form>
     
     
    			</div>
    				<!-- end content -->
        			<div data-role="footer">
     
            			<h4>Page Footer</h4>
        			</div>
    		</div>
        		<div data-role="page" id="divResponse"data-title="test">
    		</div>	
            </div>
    	</body>
    </html>
    et voilà le cose de mon web service
    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
     
    using System;
    using System.Collections.Generic;
    using System.Linq;
    using System.Web;
    using System.Web.Services;
    using System.Web.Security;
    using System.Data.SqlClient;
     
    namespace Test
    {
        /// <summary>
        /// Description résumée de authentification
        /// </summary>
        [WebService(Namespace = "http://tempuri.org/")]
        [WebServiceBinding(ConformsTo = WsiProfiles.BasicProfile1_1)]
        [System.ComponentModel.ToolboxItem(false)]
        // Pour autoriser l'appel de ce service Web depuis un script à l'aide d'ASP.NET AJAX, supprimez les marques de commentaire de la ligne suivante. 
        [System.Web.Script.Services.ScriptService]
        public class authentification : System.Web.Services.WebService
        {
            [WebMethod]
            public string Authentifier()
            {
     
                password = FormsAuthentication.HashPasswordForStoringInConfigFile(password, "MD5");
                SqlConnection oConnexion = new SqlConnection("data source=./SQLDBExpress;Integrated Security=SSPI;Initial Catalog=Ahm");
                SqlCommand oCommand = new SqlCommand("SELECT * FROM authentification WHERE Login='" + Login + "'", oConnexion);
                oConnexion.Open();
                SqlDataReader reader = oCommand.ExecuteReader();
                while (reader.Read())
                {
                    if (reader["Login"].ToString() != Login && reader["password"] != password)
     
                        return "Nom utilisateur ou mot de passe invalide";
                    else
                    {
                        if (reader["Login"].ToString() == Login && reader["password"] == password)
                        {
     
                            return "OK";
                        }
                    }
                }
                oConnexion.Close();
     
                return "";
     
            } 
     
        }
    }
    bon normalement ne fois le login et le password tapé, si on clique sur le bouton login la webmethod Authentifier doit être appeler, cependant rien ne se passe !! et j'arrive pas à cerner le problème;Merci de me donner un coup de main

  2. #2
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Mars 2013
    Messages
    14
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2013
    Messages : 14
    Points : 25
    Points
    25
    Par défaut
    Bonjour,

    Alors ya plusieurs petites choses qui ne vont pas :

    tu dois entourer les valeurs que tu transmet au webservice par des quotes :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    data:"{email:'"+$('#email').val()+"', password:'"+$('#password').val()+"'}",
    ensuite, le paramètre de fonction que tu apelle en cas de success, c'est success pas Success (et ajax, pas Ajax) le javascript est sensible à ces petits détails.
    Tu dois ensuite donner le nom de la fonction a appeler, pas l’appeler directement, et l'erreur c'est error :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    $.ajax({
      type: "POST",
      contentType: "application/json; charset=utf-8",
      url: "../authentification.asmx/Authentifier",
      data:"{ email : '"+$('#email').val()+"', password : '"+$('#password').val()+"' }",
      datatype: "JSON",
      success: onSuccessCall,
      error: onErreurCall
    });
    Pense a remettre les variables email et password dans la webmethod et ça devrait fonctionner
    Par contre ton divResponse est invisible chez moi sous chrome à l'endroit où il est, en général pour débugger les appels ajax, plutot que du div, je met des alert dans les success et error pour vérifier que j'ai bien le retour du webservice.

    A+

  3. #3
    Membre à l'essai
    Femme Profil pro
    Étudiant
    Inscrit en
    Mai 2012
    Messages
    17
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : Maroc

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Mai 2012
    Messages : 17
    Points : 10
    Points
    10
    Par défaut
    J'ai fait ce que vous m'avez dit mais rien n'a marché
    pouvez-vous m'indiquer la syntaxe des alertes que je doit mettre à la place des div.
    Merci beaucoup pour vos réponces

  4. #4
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Mars 2013
    Messages
    14
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2013
    Messages : 14
    Points : 25
    Points
    25
    Par défaut
    Ha

    Commence par faire une webmethod toute simple qui prend tes 2 paramètres, on va déjà s'assurer que ton appel au webservice fonctionne :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
        [WebMethod]
        public string Authentifier(string email, string password)
        {
            return email + " " + password;
        }
    Ca va simplement retourner une chaine de caractère contenant email et password.

    Ensuite, voici le code des fonctions :

    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
    function callservice() {
    	$.ajax({
    		type: "POST",
    		contentType: "application/json; charset=utf-8",
    		url: "../authentification.asmx/Authentifier",
    		data:"{email:'"+$('#email').val()+"', password:'"+$('#password').val()+"'}",
    		datatype: "JSON",
    		success: OnSuccessCall,
    		error: OnErreurCall
    	});
    }
    function OnSuccessCall(response) {
    	alert(response.d);
    }
    function OnErreurCall(response) {
    	alert(response.status + "  " + response.statustext);
    }
    Si tout va bien en remplissant login et password de ton formulaire, tu va recevoir une alerte de la page avec le login que tu a fourni et le password, si déjà ce point fonctionne, ton appel au webservice est fonctionnel, tu peux alors l'étendre pour faire l'authentification complète.

    (Edit : tu n'a pas besoin de toucher à la structure du body html actuel de ta page pour ces points)

  5. #5
    Membre à l'essai
    Femme Profil pro
    Étudiant
    Inscrit en
    Mai 2012
    Messages
    17
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : Maroc

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Mai 2012
    Messages : 17
    Points : 10
    Points
    10
    Par défaut
    Je viens de crééer cette fonction simple, ça me donne comme résultat: Internal Server Error

  6. #6
    Membre à l'essai
    Femme Profil pro
    Étudiant
    Inscrit en
    Mai 2012
    Messages
    17
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : Maroc

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Mai 2012
    Messages : 17
    Points : 10
    Points
    10
    Par défaut
    et si je travaille avec les alertes à la place des div ça donne une alerte avec :"500 undefined"

  7. #7
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Mars 2013
    Messages
    14
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2013
    Messages : 14
    Points : 25
    Points
    25
    Par défaut
    Tu a forcément un problème quelque part,

    L'appel au webservice fonctionne bien, c'est lui qui te renvoie l'erreur 500 undefined.

    Vérifie que tu a bien écrit les variables de la même façon partout (email et password dans le data du .ajax et dans la déclaration de la webmethod), il suffit que tu ai une majuscule dans l'un des deux (Email au lieu de email par exemple) pour que le webservice passe en erreur sur une variable "undefined"

  8. #8
    Membre à l'essai
    Femme Profil pro
    Étudiant
    Inscrit en
    Mai 2012
    Messages
    17
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : Maroc

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Mai 2012
    Messages : 17
    Points : 10
    Points
    10
    Par défaut
    quant je tapes des entiers ça marche mais pour les lettres ça marche pas

  9. #9
    Membre à l'essai
    Femme Profil pro
    Étudiant
    Inscrit en
    Mai 2012
    Messages
    17
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : Maroc

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Mai 2012
    Messages : 17
    Points : 10
    Points
    10
    Par défaut
    C'est bon ! ça marche j'avais un problème de quotes
    Merciii bcq

  10. #10
    Membre à l'essai
    Femme Profil pro
    Étudiant
    Inscrit en
    Mai 2012
    Messages
    17
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : Maroc

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Mai 2012
    Messages : 17
    Points : 10
    Points
    10
    Par défaut
    Hi!
    Maintenant la méthode de vérification du login et du password marche très bien
    j'ai besoin d'ajouter un identifiant de session ou un timeout !! Merci de me donner une piste pour commencer

  11. #11
    Membre à l'essai
    Femme Profil pro
    Étudiant
    Inscrit en
    Mai 2012
    Messages
    17
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : Maroc

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Mai 2012
    Messages : 17
    Points : 10
    Points
    10
    Par défaut
    je veux quand le login et le password sont valides , ça redirige vers une autre page .html , Merci de me donner une idée

  12. #12
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Mars 2013
    Messages
    14
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2013
    Messages : 14
    Points : 25
    Points
    25
    Par défaut
    Bonjour/soir

    pour ta question sur la session, il faut que tu permette au webservice de gérer les sessions, regarde du côté des options de webmethod.

    Pour ta redirection, il faut que tu redirige l'utilisateur après que ton ajax t'ai renvoyé un success, c'est du javascript de base la redirection

Discussions similaires

  1. Réponses: 1
    Dernier message: 11/03/2013, 16h45
  2. jquery mobil avec l'attribut data-position="fixed"
    Par franklin19 dans le forum jQuery
    Réponses: 0
    Dernier message: 18/07/2011, 10h02
  3. Réponses: 2
    Dernier message: 28/05/2011, 14h01
  4. Limitation de JQuery Mobile avec HTML 5 ?
    Par youtch dans le forum jQuery
    Réponses: 2
    Dernier message: 30/03/2011, 11h13

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