ça a l'air trop compliqué pour moi .. je crois que je vais laissé tombé ..![]()
ça a l'air trop compliqué pour moi .. je crois que je vais laissé tombé ..![]()
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![]()
Puis-je faire?
Le souci est que j'ai une erreur javascript
Code : Sélectionner tout - Visualiser dans une fenêtre à part alert((OAjax.responseXML).getElementsByName('td')[0].innerHTML)
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
ça sent la reponse xml mal formatée
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
J'ai pris mon plus beau ciseauet 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 <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> "); 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>
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
Vous avez un bloqueur de publicités installé.
Le Club Developpez.com n'affiche que des publicités IT, discrètes et non intrusives.
Afin que nous puissions continuer à vous fournir gratuitement du contenu de qualité, merci de nous soutenir en désactivant votre bloqueur de publicités sur Developpez.com.
Partager