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 :

Insérer des liens d'un site distant


Sujet :

JavaScript

  1. #1
    Membre du Club
    Homme Profil pro
    Administrateur de base de données
    Inscrit en
    Décembre 2017
    Messages
    90
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Administrateur de base de données
    Secteur : Agroalimentaire - Agriculture

    Informations forums :
    Inscription : Décembre 2017
    Messages : 90
    Points : 65
    Points
    65
    Par défaut Insérer des liens d'un site distant
    Bonjour a tous,
    j'ai un soucis avec mon code.
    Mon code consiste à me connecter au serveur https://oc-jswebsrv.herokuapp.com pour récupérer les derniers liens publiés et ajouter un nouveau lien rentré par l'utilisateur.
    Mon souci est que je n'arrive pas a afficher les liens du serveurs sur l'application.
    voici mon code et plus bas la partie concernée.


    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
    85
    86
    87
    88
    89
    90
    91
    92
    93
    94
    95
    96
    97
    98
    99
    100
    101
    102
    103
    104
    105
    106
    107
    108
    109
    110
    111
    112
    113
    114
    115
    116
    117
    118
    119
    120
    121
    122
    123
    124
    125
    126
    127
    128
    129
    130
    131
    132
    133
    134
    135
    136
    137
    138
    139
    140
    141
    142
    143
    144
    145
    146
    147
    148
    149
    150
    151
    152
    153
    154
    155
    156
    157
    158
    159
    160
    161
    162
    163
    164
    165
    166
    167
    168
    169
    170
    171
    172
    173
    174
    175
    176
    177
    178
    179
    180
    181
    182
    183
    184
    185
    186
    var req = new XMLHttpRequest();
    req.open("GET", "https://oc-jswebsrv.herokuapp.com/api/liens");
    req.addEventListener("load", function () {
        if (req.status >= 200 && req.status < 400) { // Le serveur a réussi à traiter la requête
            console.log(req.responseText);
        }
        else {
            // Affichage des informations sur l'échec du traitement de la requête
            console.error(req.status + " " + req.statusText);
        }
    });
    req.addEventListener("error", function () {
        // La requête n'a pas réussi à atteindre le serveur
        console.error("Erreur réseau");
    });
    req.send(null);
    /*
    Activité 1
    */
    // Liste des liens Web à afficher. Un lien est défini par :
    // - son titre
    // - son URL
    // - son auteur (la personne qui l'a publié)
    var listeLiens = [
        {
            titre: "So Foot"
            , url: "http://sofoot.com"
            , auteur: "yann.usaille"
        }
        , {
            titre: "Guide d'autodéfense numérique"
            , url: "http://guide.boum.org"
            , auteur: "paulochon"
        }
        , {
            titre: "L'encyclopédie en ligne Wikipedia"
            , url: "http://Wikipedia.org"
            , auteur: "annie.zette"
        }
    ];
    // Crée et renvoie un élément DOM affichant les données d'un lien
    // Le paramètre lien est un objet JS représentant un lien
    function creerElementLien(lien) {
        var titreLien = document.createElement("a");
        titreLien.href = lien.url;
        titreLien.style.color = "#428bca";
        titreLien.style.textDecoration = "none";
        titreLien.style.marginRight = "5px";
        titreLien.appendChild(document.createTextNode(lien.titre));
        var urlLien = document.createElement("span");
        urlLien.appendChild(document.createTextNode(lien.url));
        // La ligne contient le titre et l'URL du lien
        var ligneTitre = document.createElement("h4");
        ligneTitre.style.margin = "0px";
        ligneTitre.appendChild(titreLien);
        ligneTitre.appendChild(urlLien);
        // La ligne contient l'auteur
        var ligneDetails = document.createElement("span");
        ligneDetails.appendChild(document.createTextNode("Ajouté par " + lien.auteur));
        var divLien = document.createElement("div");
        divLien.classList.add("lien");
        divLien.appendChild(ligneTitre);
        divLien.appendChild(ligneDetails);
        return divLien;
    }
    //Crée fonction creerInputElement
    function creerInputElement(placeholder, id) {
        var inputElt = document.createElement("input");
        inputElt.setAttribute("type", "text");
        inputElt.setAttribute("required", "required");
        inputElt.setAttribute("placeholder", placeholder);
        inputElt.setAttribute("id", id);
        inputElt.setAttribute("name", id);
        inputElt.style.marginRight = "5px";
        return inputElt;
    }
    var contenu = document.getElementById("contenu");
    // Parcours de la liste des liens et ajout d'un élément au DOM pour chaque lien
    listeLiens.forEach(function (lien) {
        var elementLien = creerElementLien(lien);
        contenu.appendChild(elementLien);
    });
    //Création et positionnement du bouton
    var boutonElt = document.createElement("button");
    boutonElt.textContent = "Ajouter un lien";
    var pElt = document.createElement("p"); // Crée un paragraphe pour contenir boutonElt
    pElt.appendChild(boutonElt);
    document.body.insertBefore(pElt, contenu);
    //Ajout évènement click sur boutonElt
    boutonElt.addEventListener("click", function () {
        boutonElt.style.visibility = "hidden";
        //Création du formulaire
        var form = document.createElement("form");
        //Création des éléments du formulaire
        var inputAuteurElt = creerInputElement("Entrez votre nom", "auteur");
        var inputTitreElt = creerInputElement("Entrez le titre du lien", "titre");
        var inputUrlElt = creerInputElement("Entrez l'URL du lien", "url");
        //Création du type submit sans la fonction
        var inputSubmitElt = document.createElement("input");
        inputSubmitElt.setAttribute("type", "submit");
        inputSubmitElt.setAttribute("value", "Ajouter");
        //Insertion des éléments dans le formulaire
        form.appendChild(inputAuteurElt);
        form.appendChild(inputTitreElt);
        form.appendChild(inputUrlElt);
        form.appendChild(inputSubmitElt);
        //Insertion du formulaire dans pElt
        pElt.insertBefore(form, boutonElt)
            //Ajout évènement de type submit sur le formulaire
        form.addEventListener("submit", function (e) {
            var inputUrlEltValeur = form.elements.url.value;
            if ((inputUrlEltValeur.indexOf("http://") === -1) || (inputUrlEltValeur.indexOf("https://") === -1)) {
                inputUrlEltValeur = "http://" + inputUrlEltValeur;
            }
     
     
            //Crée objet lien
            var lienAjoute = {
                titre: form.elements.titre.value
                , url: inputUrlEltValeur
                , auteur: form.elements.auteur.value
            };
            //Déclaration du nouveau lien à ajouter
            var nouveauLien = creerElementLien(lienAjoute);
            //ajout du lien direct
           // Insertion du nouveau lien
            var contenu = document.getElementById("contenu");
            contenu.appendChild(nouveauLien) ;
            ajaxPost(" https://oc-jswebsrv.herokuapp.com/api/lien", lienAjoute, function (reponse) {}, true  
            );
            ajaxGet("https://oc-jswebsrv.herokuapp.com/api/liens", function (reponse) {
                // Transforme la réponse en tableau d'objets JavaScript
                var results = JSON.parse(reponse);
                var contenu = document.getElementById("contenu");
    // Parcours de la liste des liens et ajout d'un élément au DOM pour chaque lien
     
     
     
                var lienRenvoye = {
                    titre: results.titre
                    , url: results.url
                    , auteur: results.auteur
                };
     
     
     
     
    for (i= 0;i<= results.length; i++) {
     
     
    lienRenvoye.forEach(function (lienRenvoye) {
        var elementLien1 = creerElementLien(results);
        contenu.appendChild(elementLien1);
    });
        console.log(elementLien1);
     
    }
                //var nouveauLienrenvoye = creerElementLien(lienRenvoye);
                //var contenu = document.getElementById("contenu");
                //contenu.appendChild(nouveauLienrenvoye);
            });
            // sessionStorage.setItem("Liens",results);
            form.style.visibility = "hidden";
            boutonElt.style.visibility = "visible";
            //Message de confirmation
            var messageElt = document.createElement("p");
            messageElt.textContent = "Le lien \"" + lienAjoute.titre + "\" a bien été ajouté.";
            pElt.insertBefore(messageElt, boutonElt);
            // Suppresion du message
            setTimeout(function () {
                pElt.removeChild(messageElt);
            }, 2000);
            e.preventDefault(); // Annulation d'envoi des données
        });
    });
    // Vérification de l'existence d'une donnée enregistrée auparavant
    // (ce ne sera le cas que si la page a été rafraîchie)
    if (sessionStorage.getItem("autosave")) {
        // Restauration du contenu du champ
        nouveauLienrenvoye = sessionStorage.getItem("autosave");
    }
    // Écoute des changements de valeur du champ
    nouveauLienrenvoye.addEventListener("change", function () {
        // Enregistrement de la saisie utilisateur dans le stockage de session
        sessionStorage.setItem("autosave", nouveauLienrenvoye);
    });

    Voici la partie concernée:


    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
    ajaxGet("https://oc-jswebsrv.herokuapp.com/api/liens", function (reponse) {
                // Transforme la réponse en tableau d'objets JavaScript
                var results = JSON.parse(reponse);
                var contenu = document.getElementById("contenu");
    // Parcours de la liste des liens et ajout d'un élément au DOM pour chaque lien
     
     
     
                var lienRenvoye = {
                    titre: results.titre
                    , url: results.url
                    , auteur: results.auteur
                };
     
     
     
     
    for (i= 0;i<= results.length; i++) {
     
     
    lienRenvoye.forEach(function (lienRenvoye) {
        var elementLien1 = creerElementLien(results);
        contenu.appendChild(elementLien1);
    });
        console.log(elementLien1);
     
    }
                //var nouveauLienrenvoye = creerElementLien(lienRenvoye);
                //var contenu = document.getElementById("contenu");
                //contenu.appendChild(nouveauLienrenvoye);
            });
    Si vous pouviez m'aider , cela fait pas mal de temps que je suis dessus.
    Merci beaucoup.

  2. #2
    Modérateur

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

    Informations forums :
    Inscription : Janvier 2011
    Messages : 17 060
    Points : 44 585
    Points
    44 585
    Par défaut
    Bonjour,
    pourquoi deux codes différents pour faire semble t-il la même chose, il te faut choisir !

    Mon souci est que je n'arrive pas a afficher les liens du serveurs sur l'application.
    qu'entends tu par là, tu reçois une réponse sous forme d'un tableau d'objet, après le JSON.parse, il te suffit donc de récupérer les données qui s'y trouvent.

  3. #3
    Membre du Club
    Homme Profil pro
    Administrateur de base de données
    Inscrit en
    Décembre 2017
    Messages
    90
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Administrateur de base de données
    Secteur : Agroalimentaire - Agriculture

    Informations forums :
    Inscription : Décembre 2017
    Messages : 90
    Points : 65
    Points
    65
    Par défaut
    merci d'avoir repondu.
    non c'est le meme code le deuxieme c'est la partie que je veux modifié pour recuperer les liens, mais je n'y arrive pas. j'ai undefine.

  4. #4
    Modérateur

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

    Informations forums :
    Inscription : Janvier 2011
    Messages : 17 060
    Points : 44 585
    Points
    44 585
    Par défaut
    Voilà le résultat retourné après JSON.parse :
    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
    [
      {
        'id': '331421',
        'titre': 'You\'ll never walk alone',
        'url': 'https://twitter.com/beinsports_FR/status/907676530716708865?ref_src=twsrc%5Etfw&ref_url=http%3A%2F%2Fwww.eurosport.fr%2Ffootball%2Fligue-des-champions%2F2017-2018%2Fvideo-celtic-psg-le-magnifique-you-ll-never-walk-alone-du-celtic-park_sto6331735%2Fstory.sh',
        'auteur': 'shelby',
        'commentaires': '0'
      },
      {
        'id': '331411',
        'titre': 'Half-Blood Prince',
        'url': 'https://www.pottermore.com/explore-the-story/severus-snape',
        'auteur': 'Severus Snape',
        'commentaires': '0'
      },
      {
        'id': '331401',
        'titre': 'https://www.hermione.com/accueil/',
        'url': 'http://Ron',
        'auteur': 'Hermione',
        'commentaires': '0'
      },
      {
        'id': '331391',
        'titre': 'lequipe',
        'url': 'http://lequipe.fr',
        'auteur': 'vincent',
        'commentaires': '0'
      },
      {
        'id': '331381',
        'titre': 'jazz',
        'url': 'http://jazz.com',
        'auteur': 'Robert',
        'commentaires': '0'
      }
    ]
    donc il te faut écrire par exemple
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    var data = JSON.parse(reponse);
    et à partir de là tu récupères les données dans data qui est un array d'object.

  5. #5
    Membre du Club
    Homme Profil pro
    Administrateur de base de données
    Inscrit en
    Décembre 2017
    Messages
    90
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Administrateur de base de données
    Secteur : Agroalimentaire - Agriculture

    Informations forums :
    Inscription : Décembre 2017
    Messages : 90
    Points : 65
    Points
    65
    Par défaut
    ok je vais essayé , merci beaucoup.

  6. #6
    Membre du Club
    Homme Profil pro
    Administrateur de base de données
    Inscrit en
    Décembre 2017
    Messages
    90
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Administrateur de base de données
    Secteur : Agroalimentaire - Agriculture

    Informations forums :
    Inscription : Décembre 2017
    Messages : 90
    Points : 65
    Points
    65
    Par défaut
    J'ai toujours un souci:
    je recupere les liens

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    ajaxGet("https://oc-jswebsrv.herokuapp.com/api/liens", function (reponse) {
                // Transforme la réponse en tableau d'objets JavaScript
                var results = JSON.parse(reponse);
    je crais un objet:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    var lienRenvoye = {
                    titre: results.titre
                    , url: results.url
                    , auteur: results.auteur
                };
    rquand je fais un console.log de results c'est bon mais il est undefined dans mon objet. Savez vous pourquoi?

    voici une partie plus complete de mon code:
    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
         ajaxGet("https://oc-jswebsrv.herokuapp.com/api/liens", function (reponse) {
                // Transforme la réponse en tableau d'objets JavaScript
                var results = JSON.parse(reponse);
     
    // Parcours de la liste des liens et ajout d'un élément au DOM pour chaque lien
     
     
        var lienRenvoye= {
                    titre: results.titre
                    , url: results.url
                    , auteur: results.auteur
                };  
     
     
     
    console.log(results[titre]);
    for (i= 0;i<= results.length; i++) {
     
     
     var nouveauLien1 = creerElementLien(lienRenvoye);
     
           contenu.appendChild(nouveauLien1) ;
    console.log(results.titre);
     
    }
                //var nouveauLienrenvoye = creerElementLien(lienRenvoye);
                //var contenu = document.getElementById("contenu");
                //contenu.appendChild(nouveauLienrenvoye);
            });

  7. #7
    Modérateur

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

    Informations forums :
    Inscription : Janvier 2011
    Messages : 17 060
    Points : 44 585
    Points
    44 585
    Par défaut
    qui est un array d'object.
    il te faut donc accéder aux données via un
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    var titre = results[ind].titre;
    tu peux faire la lecture circulaire comme ceci
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    results.forEach( function(obj, ind){
        console.log("titre :", ind, obj.auteur); // par exemple pour voir
      }
    )

  8. #8
    Membre du Club
    Homme Profil pro
    Administrateur de base de données
    Inscrit en
    Décembre 2017
    Messages
    90
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Administrateur de base de données
    Secteur : Agroalimentaire - Agriculture

    Informations forums :
    Inscription : Décembre 2017
    Messages : 90
    Points : 65
    Points
    65
    Par défaut
    Merci beaucoup
    c'est bon cela fonctionne
    je te remercie pour ta patience .

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

Discussions similaires

  1. [XHTML 1.1] Blocage des liens et du site !
    Par lionel20 dans le forum Balisage (X)HTML et validation W3C
    Réponses: 0
    Dernier message: 01/04/2009, 23h01
  2. Réponses: 3
    Dernier message: 18/02/2009, 20h20
  3. Réponses: 2
    Dernier message: 15/07/2008, 14h43
  4. Insérer un lien vers un site web ou un email
    Par Jiyuu dans le forum wxPython
    Réponses: 5
    Dernier message: 27/06/2008, 09h32
  5. [Tableaux] structure des liens de mon site
    Par difficiledetrouver1pseudo dans le forum Langage
    Réponses: 3
    Dernier message: 10/04/2006, 16h28

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