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 :

Recherche automatique via un URL [AJAX]


Sujet :

jQuery

  1. #1
    Membre averti
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Juin 2018
    Messages
    15
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Côte d'Ivoire

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Juin 2018
    Messages : 15
    Par défaut Recherche automatique via un URL
    Slt à tous et à toutes , je suis vraiment content d'être avec vous

    Svp aujoud'hui je me trouve devant un probleme que j'essai de resoudre depui deux jours
    en effet j'essai de faire une recherche automatique via un API "une autosuggestion".
    Pour le moment j'utilise ajax pour le developpement mais je n'est aucun resultat apres resultat.

    Je vous demande de m'aidez pour la resolution de ce probleme.

    Merci

  2. #2
    Membre extrêmement actif Avatar de psychadelic
    Profil pro
    Inscrit en
    Mai 2010
    Messages
    2 532
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2010
    Messages : 2 532
    Par défaut
    Dans la barre d'URL du navigateur ?
    donc une extension pour Chrome ?

    autosuggestion ça veut rien dire, sauf si tu veux faire un truc genre méthode couet.
    Tu veux dire autocompletion ?

    soit plus clair !

  3. #3
    Membre averti
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Juin 2018
    Messages
    15
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Côte d'Ivoire

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Juin 2018
    Messages : 15
    Par défaut
    Bonjour,
    En effet s'est d'une autocompletion q'u'il s'agit.
    j'ai mon url mais je n'arrive tourjours pas à trouver le bon script pour recupérer les donnnées de mon url.

    voici le code que j'utilise

    Code html : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    		<form action="#">
    			<input type="text" name="what"id="what">
    		</form>

    Code JavaScript : 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
     
    	$(function ()
    {
    	$("#what").autocomplete({
    		source: function (request, response)
    		{
    			 $.ajax({
    		 "async": true,
    		  "crossDomain": true,
    		  "method": "GET",
    		  "headers": {}
     
            "url": "https://api.what3words.com/v2/autosuggest?addr=index.home.raft&key=GDEFCTEK&focus=51.521251%2C-0.203586&lang=fr&format=json&display=full",
             data: { q: request.term },
                dataType: "json",
                success: function (data) {
    				var suggestions=[];
                    response($.map(data.features, function (item) {
     
                        if ($.inArray(item.properties.words, suggestions) == -1) {
                            suggestions.push(item.properties.words);
                            return { label: item.properties.words 
                            };
                        }
                    }));
                }
            });
    		},
     
    		minLength: 1,
    		delay: 600
    	});
    });

  4. #4
    Membre extrêmement actif Avatar de psychadelic
    Profil pro
    Inscrit en
    Mai 2010
    Messages
    2 532
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2010
    Messages : 2 532

  5. #5
    Modérateur

    Avatar de NoSmoking
    Homme Profil pro
    Inscrit en
    Janvier 2011
    Messages
    17 217
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Isère (Rhône Alpes)

    Informations forums :
    Inscription : Janvier 2011
    Messages : 17 217
    Par défaut
    Bonjour,
    je ne saisi pas ce que tu cherches à récupérer, quand on tape ton URL dans la barre d'adresse on obtient :
    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
    {
      "thanks": "Thanks from all of us at index.home.raft for using a what3words API",
      "suggestions": [{
        "country": "gb",
        "distance": 0,
        "words": "index.home.raft",
        "rank": 1,
        "language": "en",
        "geometry": {
          "lng": -0.203586,
          "lat": 51.521251
        },
        "place": "Bayswater, London"
      }, {
        "country": "gb",
        "distance": 9,
        "words": "index.mole.raft",
        "rank": 2,
        "language": "en",
        "geometry": {
          "lng": -0.214518,
          "lat": 51.603291
        },
        "place": "Hendon, London"
      }, {
        "country": "gb",
        "distance": 7,
        "words": "index.dimes.raft",
        "rank": 3,
        "language": "en",
        "geometry": {
          "lng": -0.121206,
          "lat": 51.553134
        },
        "place": "Holloway, London"
      }],
      "status": {
        "reason": "OK",
        "status": 200
      }
    }
    donc dans le success de ton appel Ajax il te faut faire
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    success: function( data ) {
      var result = [];
      console.log( "data" ,data);
      $.each(data.suggestions, function(ind, elem){
          result.push( elem.words);  // ICI le champ que tu veux récupérer
        });
      response( result );
    }
    Ceci étant il semblerait que tu ais toujours le même résultat en retour et ce quelque soit la saisie dans ton champ what, est-ce vraiment de l'« autocomplétion » que tu cherches à faire ?

  6. #6
    Expert confirmé
    Avatar de Watilin
    Homme Profil pro
    En recherche d'emploi
    Inscrit en
    Juin 2010
    Messages
    3 101
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 36
    Localisation : France, Ille et Vilaine (Bretagne)

    Informations professionnelles :
    Activité : En recherche d'emploi

    Informations forums :
    Inscription : Juin 2010
    Messages : 3 101
    Par défaut
    Sinon il y a <datalist> qui permet une mise en œuvre sans ajax
    La FAQ JavaScript – Les cours JavaScript
    Touche F12 = la console → l’outil indispensable pour développer en JavaScript !

  7. #7
    Membre averti
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Juin 2018
    Messages
    15
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Côte d'Ivoire

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Juin 2018
    Messages : 15
    Par défaut
    Salut en effet dans mon application j'utilise un datalist. Mais je voudrais le faire maitenant avec un API qui me donne le resultat.
    Normalement avec l'API je voudrais recupéré words"index.mole.raft".

  8. #8
    Membre averti
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Juin 2018
    Messages
    15
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Côte d'Ivoire

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Juin 2018
    Messages : 15
    Par défaut
    Bon je réexplique ma préoccupation.

    Je voudrais faire une autocomplete à partir de ce lien, qui est un API.
    https://api.what3words.com/v2/autosu...n&display=full

    Evidemment quand on va sur le lien on a :
    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
     
    {
      "thanks": "Thanks from all of us at index.home.raft for using a what3words API",
      "suggestions": [{
        "country": "gb",
        "distance": 0,
        "words": "index.home.raft",
        "rank": 1,
        "language": "en",
        "geometry": {
          "lng": -0.203586,
          "lat": 51.521251
        },
        "place": "Bayswater, London"
      }, {
        "country": "gb",
        "distance": 9,
        "words": "index.mole.raft",
        "rank": 2,
        "language": "en",
        "geometry": {
          "lng": -0.214518,
          "lat": 51.603291
        },
        "place": "Hendon, London"
      }, {
        "country": "gb",
        "distance": 7,
        "words": "index.dimes.raft",
        "rank": 3,
        "language": "en",
        "geometry": {
          "lng": -0.121206,
          "lat": 51.553134
        },
        "place": "Holloway, London"
      }],
      "status": {
        "reason": "OK",
        "status": 200
      }
    }
    JE veux récupere les differents résultat du words pour mon autocomplete

  9. #9
    Membre extrêmement actif Avatar de psychadelic
    Profil pro
    Inscrit en
    Mai 2010
    Messages
    2 532
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2010
    Messages : 2 532
    Par défaut
    fallait mieux t'expliquer, c'est pas un probleme Ajax, ni un probleme d'une mise en place compliquée d'un algorithme d'autocompletion ...

    mais juste un probleme de lecture d'un arbre JSON

    Code JavaScript : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
      elment_Word_0 = reponseJSON.suggestions[0].words;
      elment_Word_1 = reponseJSON.suggestions[1].words;
      // ....

    ou encore
    Code JavaScript : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
      elment_Word_0 = reponseJSON["suggestions"][0]["words"]
      elment_Word_1 = reponseJSON["suggestions"][1]["words"]
      // ....

  10. #10
    Expert confirmé
    Avatar de Watilin
    Homme Profil pro
    En recherche d'emploi
    Inscrit en
    Juin 2010
    Messages
    3 101
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 36
    Localisation : France, Ille et Vilaine (Bretagne)

    Informations professionnelles :
    Activité : En recherche d'emploi

    Informations forums :
    Inscription : Juin 2010
    Messages : 3 101
    Par défaut
    Voici un code qui ajoute à la <datalist> tous les words trouvés dans le JSON, et fait aussi un petit peu de gestion d’erreur. Cela suppose que le JSON est récupéré au format texte, probablement depuis une requête ajax (les dans mon code sont à compléter).

    Ce script doit être placé au minimum après la <datalist>, ou bien dans une fonction DOMContentLoaded (ou en jQuery, .ready()).

    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
    let $datalist = document.querySelector("datalist");
     
    let jsonObj;
    try {
      jsonObj = JSON.parse();
    }
    catch (err) {
      console.error(err);
    }
     
    if (jsonObj) {
      for (let sugg of jsonObj.suggestions) {
        let $option = document.createElement("option");
        $option.textContent = sugg.words;
        $datalist.append($option);
      }
    }
    La FAQ JavaScript – Les cours JavaScript
    Touche F12 = la console → l’outil indispensable pour développer en JavaScript !

  11. #11
    Membre averti
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Juin 2018
    Messages
    15
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Côte d'Ivoire

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Juin 2018
    Messages : 15
    Par défaut
    Bonjour à tous, je me sent pour une fois très nul.
    vus les tentatives, je n'arrive tourjours pas à resoudre mon probleme.

    En me penchant sur la méthode que propose Mr Watilin j'ai se resultat de code:

    Code HTML : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    <input type='text' name="what" id="what" list="what">
    <datalist id="what"></datalist>


    Code JAVASCRIPT : 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
     
    <script>
    $("#what").autocomplete({
    		var settings = {
    	  async: true,
    	  crossDomain: true,
    	  url: "https://api.what3words.com/v2/autosuggest?addr=index.home.r&key=GDEFCTEK&focus=51.521251%2C-0.203586&clip=none&lang=fr&format=json&display=full",
    	  method: "GET",
    	  headers: {}
    	}
     
    let $datalist = document.querySelector("datalist");
    let jsonObj;
    try {
      jsonObj = JSON.parse(settings);
    }
    catch (err) {
      console.error(err);
    }
     
    if (jsonObj) {
      for (let sugg of jsonObj.suggestions) {
     
    	let $data= document.createElement("datalist");
        $data.textContent = sugg.words;
        $datalist.append($data);
      }
    }
    });
     
    </script>

  12. #12
    Expert confirmé Avatar de Toufik83
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Janvier 2012
    Messages
    2 530
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : Maroc

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Janvier 2012
    Messages : 2 530
    Par défaut
    tu étais presque ... dans ton poste #3, il fallait juste enlever une erreur de syntaxe + une gestion de résultat.
    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
     
    //creation d'une fonction display qui traite les données.
    display=function(o){
    	var suggestions=[];
    		$.map(o.suggestions, function (item,key) {
    			$.map(item,function(v,k){
    			if(k=='words'){
    				suggestions.push({ label: v});
    			}
     
    			});
    		});
    	return suggestions;
    }
    $("#what").autocomplete({
           source: function (request, response)
    	{
    	      $.ajax({
    		 "async": true,
    		  "crossDomain": true,
    		  "method": "GET",
    		  "headers": {},
    		  "url":"https://api.what3words.com/v2/autosuggest?addr=index.home.raft&key=GDEFCTEK&focus=51.521251%2C0.203586&lang=fr&format=json&display=full",
                      "data": { q: request.term },
                      "dataType": "json",
                      "success": function (data) {
    			response(display(data));//utilisation directe de display()
                        }
                 });
    	},
           minLength: 1,
    	delay: 600
    });

  13. #13
    Membre averti
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Juin 2018
    Messages
    15
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Côte d'Ivoire

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Juin 2018
    Messages : 15
    Par défaut
    Salut c'est encore moi malheureusement, vraiment merci beaucoup pour votre soutient.

    Je ne me portais pas très bien, j'ai eu o moin deux jours sans meme toucher à mon bureau

    merci beaucoup Mr Toufik83, votre code fonction très bien et m'affiche les éléments de la liste de suggestion. Mais elle ne fait pas une recherche normale comme je le voulait. En effet dès que je saisie n'importe quelle élément,j'ai la liste complete des words de la suggestion et non en fonction de la lettre ou du mot saisie.
    En resumé l'autocompletion ne fonctionne pas.

  14. #14
    Expert confirmé Avatar de Toufik83
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Janvier 2012
    Messages
    2 530
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : Maroc

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Janvier 2012
    Messages : 2 530
    Par défaut
    dans ce cas il faut ajouter un deuxième paramètre dans la fonction display pour faire la comparaison, modifie display comme suite :
    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
    display=function(o,terme){
    	var suggestions=[];
    	$.map(o.suggestions, function (item,key) {
    		$.map(item,function(v,k){
    		    if(k=='words'){
    			if(v.indexOf(terme.toLowerCase())>=0){
                            /*l’occurrence ici peut être au début, au milieu ou à la fin des  'words', si tu veux la chercher juste au début tu peux mettre 
                            ==0 au lieu de >=0, utilise aussi toLowerCase() pour prendre en considération les majuscules et minuscules.*/ 
    				suggestions.push({ label: v});
    			}
     
    		    }
     
    			});
    	});
    	if(suggestions.length==0){
    		suggestions.push({label:'aucun résultat trouvé.'});
            }
    	return suggestions;
    	}
    et n'oublie pas d'ajouter le paramètre lors de l'appel de la fonction :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    success: function (data) {
    	response(display(data,request.term));
    }

  15. #15
    Membre averti
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Juin 2018
    Messages
    15
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Côte d'Ivoire

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Juin 2018
    Messages : 15
    Par défaut
    Merci beaucoup pour le bout de code apporté MrToufik83

    cela fonction correctement. maintenant je vais pouvoir l'adapté a mon besoin

    Merci a tous pour votre aide

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

Discussions similaires

  1. Recherche automatique de valeur excel via visual basic 6
    Par moirs555 dans le forum VB 6 et antérieur
    Réponses: 0
    Dernier message: 22/09/2011, 13h26
  2. [PHP 5.0] Upload automatique d'un fichier via une url Php
    Par davelop dans le forum Langage
    Réponses: 1
    Dernier message: 11/12/2010, 12h07
  3. Réponses: 2
    Dernier message: 05/01/2010, 11h59
  4. Recherche internet automatique via un service web
    Par farazol dans le forum Linux
    Réponses: 0
    Dernier message: 17/01/2008, 18h31
  5. login automatique via url
    Par Groovygirl dans le forum ASP
    Réponses: 3
    Dernier message: 23/06/2006, 11h59

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