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 :

Extraire une chaine d'une autre


Sujet :

JavaScript

  1. #21
    Membre éclairé Avatar de ledisciple
    Homme Profil pro
    observateur de nuage niveau 2.3
    Inscrit en
    Août 2008
    Messages
    860
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 39
    Localisation : France

    Informations professionnelles :
    Activité : observateur de nuage niveau 2.3

    Informations forums :
    Inscription : Août 2008
    Messages : 860
    Points : 723
    Points
    723
    Par défaut
    ça a l'air trop compliqué pour moi .. je crois que je vais laissé tombé ..

  2. #22
    Membre émérite
    Avatar de Kaamo
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Avril 2007
    Messages
    1 165
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 37
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2007
    Messages : 1 165
    Points : 2 778
    Points
    2 778
    Par défaut
    A mon avis c'est le mot qui te fait peur. L'objet retourné par Ajax n'est ni plus ni moins une imbrication de balises HTML ! C'est simplement le code source de la page cible
    Tu peux accéder au contenu via les choses que tu connais bien. Tu sembles avoir des bases en HTML/ JS non ?

    Code javascript : Sélectionner tout - Visualiser dans une fenêtre à part
    (OAjax.responseXML).getElementById('mon_id').innerHTML // contenu de l'élément "mon_id";
    Code javascript : Sélectionner tout - Visualiser dans une fenêtre à part
    (OAjax.responseXML).getElementsByName('td'); // => liste des td
    Code javascript : Sélectionner tout - Visualiser dans une fenêtre à part
    (OAjax.responseXML).getElementsByName('td')[0].innerHTML // => contenu du premier <td>

    Le tutoriel est très clair et accessible, faut pas se décourager

  3. #23
    Membre éclairé Avatar de ledisciple
    Homme Profil pro
    observateur de nuage niveau 2.3
    Inscrit en
    Août 2008
    Messages
    860
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 39
    Localisation : France

    Informations professionnelles :
    Activité : observateur de nuage niveau 2.3

    Informations forums :
    Inscription : Août 2008
    Messages : 860
    Points : 723
    Points
    723
    Par défaut
    Puis-je faire?

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    alert((OAjax.responseXML).getElementsByName('td')[0].innerHTML)
    Le souci est que j'ai une erreur javascript

    Détails de l’erreur de la page Web

    Message*: Cet objet ne gère pas cette propriété ou cette méthode
    Ligne*: 28
    Caractère*: 21
    Code*: 0

  4. #24
    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 665
    Points
    66 665
    Billets dans le blog
    1
    Par défaut
    ça sent la reponse xml mal formatée

  5. #25
    Membre éclairé Avatar de ledisciple
    Homme Profil pro
    observateur de nuage niveau 2.3
    Inscrit en
    Août 2008
    Messages
    860
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 39
    Localisation : France

    Informations professionnelles :
    Activité : observateur de nuage niveau 2.3

    Informations forums :
    Inscription : Août 2008
    Messages : 860
    Points : 723
    Points
    723
    Par défaut
    Citation Envoyé par SpaceFrog Voir le message
    ça sent la reponse xml mal formatée
    et comment je fais pour savoir?

  6. #26
    Membre émérite
    Avatar de Kaamo
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Avril 2007
    Messages
    1 165
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 37
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2007
    Messages : 1 165
    Points : 2 778
    Points
    2 778
    Par défaut
    Code javascript : Sélectionner tout - Visualiser dans une fenêtre à part
    alert( (OAjax.responseXML).innerHTML )

    Mais si tu récupères ça d'un site tiers, il est possible que son code soit bancal et que, du coup, responseXML soit inexploitable.

    Donc le mieux sera de repasser par responseText et de traiter la chaine avec des match ou des replace

  7. #27
    Membre éclairé Avatar de ledisciple
    Homme Profil pro
    observateur de nuage niveau 2.3
    Inscrit en
    Août 2008
    Messages
    860
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 39
    Localisation : France

    Informations professionnelles :
    Activité : observateur de nuage niveau 2.3

    Informations forums :
    Inscription : Août 2008
    Messages : 860
    Points : 723
    Points
    723
    Par défaut
    J'ai pris mon plus beau ciseau et j'ai fait ça :

    A terme les données n'iront pas dans des div, mais dans des champ de formulaire. Désolé pour les fautes de validation, je ferais la correction en dernier. Certains penseront que je pourrais surment factoriser mon code ...

    En tout cas, ça fonctionne (bien sur temps que personne n'ira cafter auprès du webmaster de la fff pour changer le code source)

    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
    <script>
    function maFonctionAjax(numero_individu, mot_passe)
    {
      var OAjax;
      if (window.XMLHttpRequest) OAjax = new XMLHttpRequest();
      else if (window.ActiveXObject) OAjax = new ActiveXObject('Microsoft.XMLHTTP'); 
      OAjax.open('POST',"http://www.fff.fr/competitions/php/acces/validation_new.php",true);
      OAjax.onreadystatechange = function()
      {
     
    	if(OAjax.readyState == 1 )
    	{
    		document.getElementById('msg').innerHTML='<font color=RED>début du transfert des données</font>';
    	}
    	if(OAjax.readyState == 2 )
    	{
    		document.getElementById('msg').innerHTML='<font color=RED>données transférées</font>';
    	}
     
    	if (OAjax.readyState == 4 && OAjax.status==200)
    	{
     
    		//Pour savoir si le bon mot de passe a été rentré. Comme il n'y a pas de message d'erreur de retour de la part de la fff, j'ai pris un mot du formulaire d'autentification qui ne se trouve pas dans la page d'affichage des désignations.                    
    		var MotBidon = "jamais";
    		var FindMe = OAjax.responseText.indexOf(MotBidon);
     
     
    		if(FindMe != "-1"){ // Valeur de retour de la fonction indexOf s'il n'y a pas de valeur trouvée
    			document.getElementById('msg').innerHTML='<font color=RED>Mauvais mot de passe ou numéro d\'individu</font>';
    		}
    		else{ 
    			//On cherche les données en fonction du code source. Aléatoire? heu ... oui
     
    			//Arbitre centre
    			var TrouveArbitrecentre = OAjax.responseText.split('Arbitre centre&#xA0;<strong>');
    			var TrouveArbitrecentre2 = TrouveArbitrecentre[1].split('</strong></li></ul></div>');
     
    			document.getElementById('arbitrecentre').innerHTML='<font color=grey>'+TrouveArbitrecentre2[0]+'</font>';
     
     
    			//Adresse
    			var TrouveAdresse = OAjax.responseText.split('<strong>Adresse</strong><br/>');
    			var TrouveAdresse2 = TrouveAdresse[1].split('</li><li class="puce bord"><strong>');
    			var TrouveAdresse3 = TrouveAdresse2[0].replace("<br/>"," ");
     
    			document.getElementById('adresse').innerHTML='<font color=green>'+TrouveAdresse3+'</font>';
     
    			//Distance
    			var TrouveDistance = OAjax.responseText.split('Distance depuis votre domicile : ');
    			var TrouveDistance2 = TrouveDistance[1].split(' km');
     
    			document.getElementById('distance').innerHTML='<font color=orange>'+TrouveDistance2[0]+'</font>';
     
     
    			//Date
    			var TrouveDate = OAjax.responseText.split('class="date">');
    			var TrouveDate2 = TrouveDate[1].split('</span><div class="allonge">');
     
    			document.getElementById('date').innerHTML='<font color=black>'+TrouveDate2[0]+'</font>';
     
    			//Compétition
    			var TrouveCompetition = OAjax.responseText.split('bgbleu"><div><strong>');
    			var TrouveCompetition2 = TrouveCompetition[1].split("</strong><strong>&#xA0;");
     
    			document.getElementById('competition').innerHTML='<font color=blue>'+TrouveCompetition2[0]+'</font>';
     
    			//Poste
    			var TrouveLePoste = OAjax.responseText.split("Poste : ");
    			var TrouveLePoste2 = TrouveLePoste[1].split("</strong><br/>match N");
     
    			document.getElementById('Poste').innerHTML='<font color=yellow>'+TrouveLePoste2[0]+'</font>';
    		}
     
     
              }    
     
      }
      OAjax.setRequestHeader('Content-type','application/x-www-form-urlencoded');
      OAjax.send('numero_individu='+numero_individu+'&mot_passe='+mot_passe);                  
    } 
     
     
    </script>
     
    <form method="post" onsubmit="maFonctionAjax(this.numero_individu.value,this.mot_passe.value);return false" 
        <table border="0" cellspacing="0">
        <tr>
          <td colspan=2>
            Formulaire Ajax
          </td>
        </tr>
          <tr>
            <td>numero_individu</td>
            <td>
              <input name="numero_individu" id="numero_individu" type="text"></td>
          </tr>
          <tr>
            <td>mot_passe</td>
            <td><input name="mot_passe" id="mot_passe" type="text"></td>
          </tr>
          <tr>
            <td colspan="2"><input type="submit" value="envoyer"  /></td>
          </tr>
        </table>
    </form>
    <div id="msg"></div>
    <div id="competition"></div>
    <div id="Poste"></div>
    <div id="date"></div>
    <div id="distance"></div>
    <div id="adresse"></div>
    <div id="arbitrecentre"></div>

  8. #28
    Membre éclairé Avatar de ledisciple
    Homme Profil pro
    observateur de nuage niveau 2.3
    Inscrit en
    Août 2008
    Messages
    860
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 39
    Localisation : France

    Informations professionnelles :
    Activité : observateur de nuage niveau 2.3

    Informations forums :
    Inscription : Août 2008
    Messages : 860
    Points : 723
    Points
    723
    Par défaut
    Citation Envoyé par Bovino Voir le message
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    if (document.getElementById)
    Heu... tu pourrais me citer un navigateur qui justifierais la présence de cette condition ?

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    OAjax.open('POST',"http://www.fff.fr/competitions/php/acces/validation_new.php",true);

    Ca marche ça ?
    A moins que tu sois le Webmaster de la FFF, je suis étonné que tu ne sois pas restreint par la Same Origin Policy
    Cela fonctionne avec IE 8 (le navigateur du taf), mais pas avec les navigateurs modernes.

    Quels sont les alternatives dont je dispose pour récupérer les informations et les insérer dans mes champs de formulaires (local) ?

    J'ai entendu parler de XMLHttpRequest cross domain, mais je ne sais pas si je peux l'utiliser ou s'il y a d'autres alternatives?

    Personne pour me mettre sur une nouvelle idée? En php par exemple .. genre fopen ou file_get_contents

+ Répondre à la discussion
Cette discussion est résolue.
Page 2 sur 2 PremièrePremière 12

Discussions similaires

  1. Réponses: 2
    Dernier message: 31/10/2011, 11h45
  2. [RegExp] y a-t-il plus simple pour extraire sous-chaine d'une chaine ?
    Par laurentSc dans le forum Général JavaScript
    Réponses: 14
    Dernier message: 17/03/2011, 17h16
  3. Réponses: 7
    Dernier message: 25/02/2011, 13h06
  4. Réponses: 1
    Dernier message: 18/04/2007, 17h07
  5. Réponses: 2
    Dernier message: 19/10/2005, 15h38

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