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

JavaScript Discussion :

[AJAX] Comment faire ce genre de saisie ?


Sujet :

JavaScript

  1. #1
    Membre du Club
    Inscrit en
    Avril 2008
    Messages
    199
    Détails du profil
    Informations forums :
    Inscription : Avril 2008
    Messages : 199
    Points : 58
    Points
    58
    Par défaut [AJAX] Comment faire ce genre de saisie ?
    Bonsoir,

    J'ai vu un formulaire dans lequel l'utilisateur commence par saisir un chiffre pour le code postal, et cela affiche en liste pré-saisie toutes les communes de France dont le code postal commence par le chiffre en question.
    On m'a dit que ça se faisait en Ajax, mais ce que je voudrais savoir, c'est comment ? Est-ce possible sans framework ? Faut-il se connecter à une base de données pour avoir toutes les villes ? Est-ce compliqué ?
    Merci.

  2. #2
    Membre émérite Avatar de franculo_caoulene
    Profil pro
    Inscrit en
    Octobre 2003
    Messages
    2 880
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2003
    Messages : 2 880
    Points : 2 953
    Points
    2 953
    Par défaut
    Salut,

    Je n'ai pas trouvé d'exemple sur dvp. Fais une recherche sur google avec pour mot clé "autocompletion" ou "autocomplete"

  3. #3
    Membre du Club
    Inscrit en
    Avril 2008
    Messages
    199
    Détails du profil
    Informations forums :
    Inscription : Avril 2008
    Messages : 199
    Points : 58
    Points
    58
    Par défaut
    Merci, je ne connaissais pas le terme à cela.
    J'ai trouvé cela sur Dvp :
    http://dcabasson.developpez.com/arti...as-a-pas/#L1-A

    Mais le contenu php me fait un peu peur. Est-ce qu'il vaut mieux chercher un autre exemple, ou le php est-il transposable en Java ?

  4. #4
    Membre émérite Avatar de franculo_caoulene
    Profil pro
    Inscrit en
    Octobre 2003
    Messages
    2 880
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2003
    Messages : 2 880
    Points : 2 953
    Points
    2 953
    Par défaut
    Si tu sais faire une boucle en Java et afficher un résultat t'as tout en main.

  5. #5
    Membre du Club
    Inscrit en
    Avril 2008
    Messages
    199
    Détails du profil
    Informations forums :
    Inscription : Avril 2008
    Messages : 199
    Points : 58
    Points
    58
    Par défaut
    Ah ça je sais faire : me connecter à la base, et récupérer toutes les villes.
    Donc si je comprend bien, sur le lien, j'ai juste à changer le code php en Java, et ranger dans la variable $liste toutes les communes ? Tout le reste je garde tel quel ?

    Désolé, je débute vraiment dans ce qui est développement web, et quand c'est autre chose que de la prog je suis perdu. ^^

  6. #6
    Membre émérite Avatar de franculo_caoulene
    Profil pro
    Inscrit en
    Octobre 2003
    Messages
    2 880
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2003
    Messages : 2 880
    Points : 2 953
    Points
    2 953
    Par défaut
    Ce ne sera pas forcément un copier/coller strict, mais en gros oui.

  7. #7
    Membre régulier
    Profil pro
    Inscrit en
    Mars 2007
    Messages
    60
    Détails du profil
    Informations personnelles :
    Âge : 49
    Localisation : France

    Informations forums :
    Inscription : Mars 2007
    Messages : 60
    Points : 95
    Points
    95
    Par défaut
    Citation Envoyé par Monkey_D.Luffy Voir le message
    Mais le contenu php me fait un peu peur. Est-ce qu'il vaut mieux chercher un autre exemple, ou le php est-il transposable en Java ?
    Bonjour,

    Il n'y a aucune restriction concernant le langage utilisé coté serveur, l'essentiel est que le serveur soit en mesure de fournir la réponse attendue par le script de la page cliente.

    Tu défini ton protocole d'échange entre le script Ajax de l'autocomplétion coté client et la page chargée de fournir les données coté serveur et après libre à toi d'utiliser la technologie que tu veux.

  8. #8
    Membre du Club
    Inscrit en
    Avril 2008
    Messages
    199
    Détails du profil
    Informations forums :
    Inscription : Avril 2008
    Messages : 199
    Points : 58
    Points
    58
    Par défaut
    Ok merci pour les conseils.

    J'avais commencé à travailler sur le lien que j'avais posté. En cas de difficulté, j'essaierai les autres.

    Citation Envoyé par younid Voir le message
    Il n'y a aucune restriction concernant le langage utilisé coté serveur, l'essentiel est que le serveur soit en mesure de fournir la réponse attendue par le script de la page cliente.
    Ah intéressant. J'espère que côté client ça ne changera rien selon que je fasse la requête sur un serveur en .java.

    Le seul truc qui m'inquiète, c'est de savoir si dans ce code :

    Code HTML : Sélectionner tout - Visualiser dans une fenêtre à part
    _xmlHttp.open("GET",_adresseRecherche+"?debut="+valeur,true);

    _adresseRecherche peut être ou non un .java, qui exécuterait alors un doGet.

  9. #9
    Membre régulier
    Profil pro
    Inscrit en
    Mars 2007
    Messages
    60
    Détails du profil
    Informations personnelles :
    Âge : 49
    Localisation : France

    Informations forums :
    Inscription : Mars 2007
    Messages : 60
    Points : 95
    Points
    95
    Par défaut
    Citation Envoyé par Monkey_D.Luffy Voir le message
    Le seul truc qui m'inquiète, c'est de savoir si dans ce code :

    Code HTML : Sélectionner tout - Visualiser dans une fenêtre à part
    _xmlHttp.open("GET",_adresseRecherche+"?debut="+valeur,true);

    _adresseRecherche peut être ou non un .java, qui exécuterait alors un doGet.
    _adresseRecherche doit être une url valide et retourner une réponse compréhensible par ton script coté client. Le meilleurs test c'est de saisir directement cette adresse sur ton navigateur (attention aux paramètres en POST ou GET) et de voir si la réponse est correct... sinon faire un affichage de la reponse dans un DIV afin de la contrôler avant faire la suite du traitement par le script client. Un simple test unitaire mais qui vaut son pesant d'or

  10. #10
    Membre du Club
    Inscrit en
    Avril 2008
    Messages
    199
    Détails du profil
    Informations forums :
    Inscription : Avril 2008
    Messages : 199
    Points : 58
    Points
    58
    Par défaut
    Ok merci, je teste ça dès que j'ai fini de coder le doGet.

  11. #11
    Membre régulier
    Profil pro
    Inscrit en
    Mars 2007
    Messages
    60
    Détails du profil
    Informations personnelles :
    Âge : 49
    Localisation : France

    Informations forums :
    Inscription : Mars 2007
    Messages : 60
    Points : 95
    Points
    95
    Par défaut
    Une page intéressante pour les cours et tutoriels pour apprendre la programmation en Java : http://java.developpez.com/cours/

    Et pour rigoler un peu, c'est la pause :

  12. #12
    Membre du Club
    Inscrit en
    Avril 2008
    Messages
    199
    Détails du profil
    Informations forums :
    Inscription : Avril 2008
    Messages : 199
    Points : 58
    Points
    58
    Par défaut
    Lol.

    Merci pour le lien, je regarde sur le site de Java Blueprint.
    Je n'arrive pas à remplacer le options.php par Villes.java dans la solution donnée sur DVP.

    Voici mon code Java :

    Code Java : 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
    protected void processRequest(HttpServletRequest request, HttpServletResponse response)
        throws ServletException, IOException {
            response.setContentType("text/html;charset=UTF-8");
            PrintWriter out = response.getWriter();
            String debut;
            try {
                    //out.println("<%@page contentType='text/html' pageEncoding='UTF-8'%>");
                    out.println(("<?xml version='1.0' encoding='UTF-8' ?><options>"));
                    if(request.getParameter("debut") != null)
                        debut = request.getParameter("debut");
                    else 
                        debut = "";
                    String liste = "liste";
     
                        out.println("<options><option>Ligne1</option></options>");
     
            } finally { 
                out.close();
            }
        }

    Et voici le bout de JavaScript modifié :

    Code JavaScript : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    var _adresseRecherche = "http://localhost:8084/Sos_PtV1/Villes" //l'adresse � interroger pour trouver les suggestions
     
    function callSuggestions(valeur){
      if(_xmlHttp&&_xmlHttp.readyState!=0){
        _xmlHttp.abort()
      }
      _xmlHttp=getXMLHTTP();
      if(_xmlHttp){
        //appel � l'url distante
        _xmlHttp.open("GET",_adresseRecherche+"?debut="+valeur,true);

    Vous pensez que c'est mort pour faire fonctionner le tout avec du Java, ou bien il y a d'autres modifs à effectuer ?
    Merci.

  13. #13
    Membre du Club
    Inscrit en
    Avril 2008
    Messages
    199
    Détails du profil
    Informations forums :
    Inscription : Avril 2008
    Messages : 199
    Points : 58
    Points
    58
    Par défaut
    Bon alors ça avance, j'ai trouvé un autre script.

    L'ennui, c'est que seuls les 180 premières communes sont présentes en auto-saisies. Je ne peux pas vraiment faire plus.
    En gros, je parcours toute la base, je récupère toutes les communes dans une array, et c'est cette array qui sera parcourue lors de la pré-saisie.
    Voici le bout de code :

    Code Java : 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
    out.println("<script>");
             out.println("var suggests = \"\"");
             if(res2.next()) {
                 Code_postal = res2.getString("Code_postal");
                 if(Code_postal.length()<5)
                     Code_postal = "0" + Code_postal;
                 Commune = res2.getString("Commune");
                 out.println("suggests = new Array('" + Code_postal + "  " + Commune + "'");
             }
     
             for(int i = 0; i<180; i++) {
                 Code_postal = res2.getString("Code_postal");
                 if(Code_postal.length()<5)
                     Code_postal = "0" + Code_postal;
                 Commune = res2.getString("Commune");
                 out.println(", '" + Code_postal + "  " + Commune + "'");
                 res2.next();
             }
             out.println(");");
             out.println("</script>");

    Donc y aurait-il un moyen en JavaScript d'avoir une array de taille quasi illimitée ?
    Ou bien, toujours en JavaScript, peut-on se connecter à une base JDBC ?

  14. #14
    Membre émérite Avatar de franculo_caoulene
    Profil pro
    Inscrit en
    Octobre 2003
    Messages
    2 880
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2003
    Messages : 2 880
    Points : 2 953
    Points
    2 953
    Par défaut
    Si tu as un problème venant du langage serveur, il faut poser la question dans le bon forum. Ici c'est plutôt tourné vers Javascript et l'objet XMLHttpRequest lui même.

  15. #15
    Membre du Club
    Inscrit en
    Avril 2008
    Messages
    199
    Détails du profil
    Informations forums :
    Inscription : Avril 2008
    Messages : 199
    Points : 58
    Points
    58
    Par défaut
    Et bien en fait le problème est + du côté client et en JavaScript. Côté serveur, je ne pense pas avoir de soucis. Le type Array a-t-il une limite en nombre d'éléments ?
    Et le JavaScript ne permet pas de faire des requêtes vers un serveur ?

  16. #16
    Membre régulier
    Profil pro
    Inscrit en
    Mars 2007
    Messages
    60
    Détails du profil
    Informations personnelles :
    Âge : 49
    Localisation : France

    Informations forums :
    Inscription : Mars 2007
    Messages : 60
    Points : 95
    Points
    95
    Par défaut
    Citation Envoyé par Monkey_D.Luffy Voir le message
    Et voici le bout de JavaScript modifié :

    Code JavaScript : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    var _adresseRecherche = "http://localhost:8084/Sos_PtV1/Villes" //l'adresse � interroger pour trouver les suggestions
     
    function callSuggestions(valeur){
      if(_xmlHttp&&_xmlHttp.readyState!=0){
        _xmlHttp.abort()
      }
      _xmlHttp=getXMLHTTP();
      if(_xmlHttp){
        //appel � l'url distante
        _xmlHttp.open("GET",_adresseRecherche+"?debut="+valeur,true);

    Vous pensez que c'est mort pour faire fonctionner le tout avec du Java, ou bien il y a d'autres modifs à effectuer ?
    Merci.
    Est-ce que le fait de saisir l'adresse suivante donne quelque chose sur ton navigateur ?
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    http://localhost:8084/Sos_PtV1/Villes?debut=UNCODEPOSTAL

  17. #17
    Membre du Club
    Inscrit en
    Avril 2008
    Messages
    199
    Détails du profil
    Informations forums :
    Inscription : Avril 2008
    Messages : 199
    Points : 58
    Points
    58
    Par défaut
    Oui. Cela exécute le doGet de ma servlet.
    Mais j'ai abandonné cette solution, je n'arrivais pas à la faire fonctionner.

    Mais est-il possible d'inclure une page Php dans un projet web Netbeans ? Si oui, je pourrais m'y remettre.

  18. #18
    Membre du Club
    Inscrit en
    Avril 2008
    Messages
    199
    Détails du profil
    Informations forums :
    Inscription : Avril 2008
    Messages : 199
    Points : 58
    Points
    58
    Par défaut
    Je voudrais savoir, comment être sûr que lors de l'exécution de cette ligne, _adresseRecherche est valide ou non ?

    Code Ajax : Sélectionner tout - Visualiser dans une fenêtre à part
    _xmlHttp.open("GET",_adresseRecherche+"?debut="+valeur,true);

    Lorsque je mets un fichier php dans _adresseRecherche, cela fonctionne mais me renvoie false.
    Quand je mets un autre fichier (.jsp par exemple), cela ne fonctionne pas et me renvoie true.

  19. #19
    Membre du Club
    Inscrit en
    Avril 2008
    Messages
    199
    Détails du profil
    Informations forums :
    Inscription : Avril 2008
    Messages : 199
    Points : 58
    Points
    58
    Par défaut
    Problème résolu. J'avais pas configuré la réponse de la servlet en text/xml.

  20. #20
    Membre émérite Avatar de franculo_caoulene
    Profil pro
    Inscrit en
    Octobre 2003
    Messages
    2 880
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2003
    Messages : 2 880
    Points : 2 953
    Points
    2 953
    Par défaut
    Un petit tag [Résolu] en titre en cliquant sur le bouton ne serait pas superflu.

+ Répondre à la discussion
Cette discussion est résolue.
Page 1 sur 2 12 DernièreDernière

Discussions similaires

  1. [AJAX] comment faire une zone reactive
    Par didou038 dans le forum Général JavaScript
    Réponses: 3
    Dernier message: 24/12/2006, 12h51
  2. [AJAX] Comment faire un POST ?
    Par rob2-9 dans le forum Général JavaScript
    Réponses: 1
    Dernier message: 14/11/2006, 22h22
  3. Réponses: 1
    Dernier message: 31/10/2006, 11h15
  4. [AJAX] Comment faire de l'ajax vers deux serveurs
    Par wtfu dans le forum Général JavaScript
    Réponses: 6
    Dernier message: 27/07/2006, 13h39
  5. [VB6] Comment faire pour annuler la saisie dans un combobox ??
    Par Lucas42 dans le forum VB 6 et antérieur
    Réponses: 6
    Dernier message: 14/06/2006, 15h16

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