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 :

Récupérer une valeur retournée par une url


Sujet :

JavaScript

  1. #1
    Nouveau Candidat au Club
    Inscrit en
    Mars 2011
    Messages
    2
    Détails du profil
    Informations forums :
    Inscription : Mars 2011
    Messages : 2
    Points : 1
    Points
    1
    Par défaut Récupérer une valeur retournée par une url
    Bonjour,

    Je cherche à récupérer une valeur retournée par une url pour la mettre dans une variable.

    En détail, j'utilise un service distant qui vérifie l’existence ou pas d'une adresse mail dans une base.
    Ca marche par variable d'url :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    http://mon_service.com/?email=toto_AT_toto.com
    et là, l'url renvoie OK ou NOK (c'est ce qui s'affiche dans mon navigateur lorsque j'entre l'url).

    --> je cherche à stocker ce OK ou NOK dans une variable javascript...

    Je ne suis pas développeur, juste bricolo Est-ce simple à faire, et si oui comment ?

    Merci pour votre aide...

  2. #2
    Expert confirmé
    Avatar de Loceka
    Profil pro
    Inscrit en
    Mars 2004
    Messages
    2 276
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2004
    Messages : 2 276
    Points : 4 845
    Points
    4 845
    Par défaut
    Tu peux essayer avec des iframes : tu charges la page dans l'iframe et tu récupères le contenu de la page (ça c'est la partie chiante parce qu'avec toute la politique de sécurité concernant les frames/iframes y'a plein de trucs qu'on ne peut pas faire).

  3. #3
    Nouveau Candidat au Club
    Inscrit en
    Mars 2011
    Messages
    2
    Détails du profil
    Informations forums :
    Inscription : Mars 2011
    Messages : 2
    Points : 1
    Points
    1
    Par défaut
    Citation Envoyé par Loceka Voir le message
    Tu peux essayer avec des iframes : tu charges la page dans l'iframe et tu récupères le contenu de la page (ça c'est la partie chiante parce qu'avec toute la politique de sécurité concernant les frames/iframes y'a plein de trucs qu'on ne peut pas faire).
    Merci... par contre, je ne sais pas faire ça
    Peux-tu me mettre sur une piste stp (liste des fonctions utilisées) ?
    merci pour ton aide

  4. #4
    Membre expérimenté Avatar de Willpower
    Homme Profil pro
    sans emploi
    Inscrit en
    Décembre 2010
    Messages
    1 009
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations professionnelles :
    Activité : sans emploi

    Informations forums :
    Inscription : Décembre 2010
    Messages : 1 009
    Points : 1 519
    Points
    1 519
    Par défaut
    Citation Envoyé par Loceka Voir le message
    Tu peux essayer avec des iframes : tu charges la page dans l'iframe et tu récupères le contenu de la page (ça c'est la partie chiante parce qu'avec toute la politique de sécurité concernant les frames/iframes y'a plein de trucs qu'on ne peut pas faire).
    effectivement si c'est du cross-domain, il va avoir du mal avec les iframe et encore plus avec l'ajax (xhr). la solution détournée est de passer par un script dans ce genre là :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    var s = document.createElement("script");
    s.onload = function(){ // onload ou pour ie onreadystatechange ... ou un truc du genre
      var data = s.innerText || s.text(); // un truc du genre 
      document.getElementsByTagName("head")[0].removeChild(s);
      traitement(data); // ta fonction ici
    }
    s.src = 'http://mon_service.com/?email=toto_AT_toto.com';
    document.getElementsByTagName("head")[0].appendChild(s);

    edit: voici le code de jquery :
    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
    script = document.createElement( "script" );
     
    				script.async = "async";
     
    				if ( s.scriptCharset ) {
    					script.charset = s.scriptCharset;
    				}
     
    				script.src = s.url;
     
    				// Attach handlers for all browsers
    				script.onload = script.onreadystatechange = function( _, isAbort ) {
     
    					if ( !script.readyState || /loaded|complete/.test( script.readyState ) ) {
     
    						// Handle memory leak in IE
    						script.onload = script.onreadystatechange = null;
     
    						// Remove the script
    						if ( head && script.parentNode ) {
    							head.removeChild( script );
    						}
     
    						// Dereference the script
    						script = undefined;
     
    						// Callback if not abort
    						if ( !isAbort ) {
    							callback( 200, "success" );
    						}
    					}
    				};
    				// Use insertBefore instead of appendChild  to circumvent an IE6 bug.
    				// This arises when a base node is used (#2709 and #4378).
    				head.insertBefore( script, head.firstChild );

  5. #5
    Rédacteur/Modérateur

    Avatar de SpaceFrog
    Homme Profil pro
    Développeur Web Php Mysql Html Javascript CSS Apache - Intégrateur - Bidouilleur SharePoint
    Inscrit en
    Mars 2002
    Messages
    39 640
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 74
    Localisation : Royaume-Uni

    Informations professionnelles :
    Activité : Développeur Web Php Mysql Html Javascript CSS Apache - Intégrateur - Bidouilleur SharePoint
    Secteur : Industrie

    Informations forums :
    Inscription : Mars 2002
    Messages : 39 640
    Points : 66 663
    Points
    66 663
    Billets dans le blog
    1
    Par défaut
    ajax ?

  6. #6
    Expert confirmé
    Avatar de Loceka
    Profil pro
    Inscrit en
    Mars 2004
    Messages
    2 276
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2004
    Messages : 2 276
    Points : 4 845
    Points
    4 845
    Par défaut
    pour la création de l'iframe c'est simple, tu peux la mettre dans ta page de départ :
    Code html : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    <body>
    <!-- ... -->
    <iframe style="display:none" id="resultat" src="ta_page_cible"></iframe>
    </body>

    Ensuite pour changer l'url de l'iframe c'est simple aussi :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    var monIframe = document.getElementById("resultat");
    monIframe.setAttribute("src", "une_autre_page_cible");
    Après c'est là que ça devient complexe et faudra que tu tatonnes (ou qu'un autre membre gentil fasse le travail pour toi).
    Déjà faut que tu attendes que la page ait terminé de charger, donc faut probablement connaître le contenu (code source) de la page pour déterminer en fonction des éléments chargés si la page a terminé ou non car je doute que tu puisses ajouter/modifier un attribut de la page (genre le onload qui serait bien utile ici).

    Pour accéder au contenu (à l'équivalent du "document" dans une page standard) de ton iframe tu peux procéder comme suit :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    var contenu = monIframe.contentWindow.document || monIframe.contentDocument;
    Une fois que tu as ça, tu peux théoriquement (hors restrictions de sécurité donc) utiliser toutes les fonctions javascript. En pratique (d'après ce dont je me rappelle) tu ne peux rien modifier après il faut voir si tu peux accéder aux éléments. Si c'est le cas tu as ce que tu souhaites.

  7. #7
    Membre expérimenté Avatar de Willpower
    Homme Profil pro
    sans emploi
    Inscrit en
    Décembre 2010
    Messages
    1 009
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations professionnelles :
    Activité : sans emploi

    Informations forums :
    Inscription : Décembre 2010
    Messages : 1 009
    Points : 1 519
    Points
    1 519
    Par défaut
    Citation Envoyé par Loceka Voir le message
    pour la création de l'iframe c'est simple, tu peux la mettre dans ta page de départ :
    Code html : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    <body>
    <!-- ... -->
    <iframe style="display:none" id="resultat" src="ta_page_cible"></iframe>
    </body>

    Ensuite pour changer l'url de l'iframe c'est simple aussi :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    var monIframe = document.getElementById("resultat");
    monIframe.setAttribute("src", "une_autre_page_cible");
    Après c'est là que ça devient complexe et faudra que tu tatonnes (ou qu'un autre membre gentil fasse le travail pour toi).
    Déjà faut que tu attendes que la page ait terminé de charger, donc faut probablement connaître le contenu (code source) de la page pour déterminer en fonction des éléments chargés si la page a terminé ou non car je doute que tu puisses ajouter/modifier un attribut de la page (genre le onload qui serait bien utile ici).

    Pour accéder au contenu (à l'équivalent du "document" dans une page standard) de ton iframe tu peux procéder comme suit :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    var contenu = monIframe.contentWindow.document || monIframe.contentDocument;
    Une fois que tu as ça, tu peux théoriquement (hors restrictions de sécurité donc) utiliser toutes les fonctions javascript. En pratique (d'après ce dont je me rappelle) tu ne peux rien modifier après il faut voir si tu peux accéder aux éléments. Si c'est le cas tu as ce que tu souhaites.
    je pense qu'en cross-domain tu ne peux pas accèder au contenu... même pas en lecture seule. sauf p-e sous un navigateur (ie ou firefox). (me souviens plus trop, mais je suis quasi certain que c'est impossible au moins sur l'un des 2).

  8. #8
    Expert confirmé
    Avatar de Loceka
    Profil pro
    Inscrit en
    Mars 2004
    Messages
    2 276
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2004
    Messages : 2 276
    Points : 4 845
    Points
    4 845
    Par défaut
    Moui c'est bien ce que je redoutais pour avoir fait quelques tests à une époque.

    Sinon le plus simple serait de récupérer le contenu de la page côté serveur (donc en PHP, Java, ...) en utilisant les facilités du langage (fopen pour PHP) et ensuite de faire de l'ajax - ou une solution par iframe mais tant qu'à faire autant passer par l'ajax - sur le contenu récupéré par ton serveur.

    Bien entendu ça présuppose d'avoir un serveur.

    Ceci dit, si tu veux juste savoir si le mail est bon ou non sans afficher quelque chose de spécial sur ta page, tu peux te contenter de charger la page distante dans l'iframe sans mettre le display:none.

  9. #9
    Rédacteur/Modérateur

    Avatar de SpaceFrog
    Homme Profil pro
    Développeur Web Php Mysql Html Javascript CSS Apache - Intégrateur - Bidouilleur SharePoint
    Inscrit en
    Mars 2002
    Messages
    39 640
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 74
    Localisation : Royaume-Uni

    Informations professionnelles :
    Activité : Développeur Web Php Mysql Html Javascript CSS Apache - Intégrateur - Bidouilleur SharePoint
    Secteur : Industrie

    Informations forums :
    Inscription : Mars 2002
    Messages : 39 640
    Points : 66 663
    Points
    66 663
    Billets dans le blog
    1

Discussions similaires

  1. [BackboneJS] Récupérer la valeur retournée par une collection asynchrone
    Par webkoros dans le forum Bibliothèques & Frameworks
    Réponses: 0
    Dernier message: 04/11/2013, 21h10
  2. Récupérer une valeur retournée par une url externe
    Par hadakamatcho dans le forum Coldfusion
    Réponses: 2
    Dernier message: 17/10/2012, 14h17
  3. Réponses: 8
    Dernier message: 05/04/2011, 08h06
  4. Réponses: 1
    Dernier message: 13/04/2010, 10h00
  5. Réponses: 1
    Dernier message: 08/09/2009, 14h40

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