Salut à tous,
Je souhaiterais faire un formulaire de recherche avec Ajax sur des données provenant d'un fichier xml. Est ce possible ? y a t il des scripts dispo ou des tuto ?
Merci pour votre aide.
Salut à tous,
Je souhaiterais faire un formulaire de recherche avec Ajax sur des données provenant d'un fichier xml. Est ce possible ? y a t il des scripts dispo ou des tuto ?
Merci pour votre aide.
Bonjour,Oui.Bien sûr : juste au-dessus des discussions de ce forum
A+
Pour tout savoir sur l'utilisation du forum
En postant votre message, n'oubliez pas les Règles du Club.
Merci pour ce link, mais mon souhait c'est de pouvoir parser un fichier xml, avec Javascript ou Ajax et ne pas passer par un langage serveur (php, ...).Bien sûr : juste au-dessus des discussions de ce forum
Oui, j'ai bien compris
Tu n'a pas besoin de langage serveur pour Ajax (ni même de serveur d'ailleurs : ça peut être un fichier local).
Les tutos te montrent comment faire l'appel au fichier, puis en traiter la réponse.
Et puis, ce n'est pas "Javascript ou Ajax", mais plutôt "Ajax donc Javascript"
A+
Pour tout savoir sur l'utilisation du forum
En postant votre message, n'oubliez pas les Règles du Club.
T'es pas obligé d'utiliser Ajax pour parser un fichier xml.Et puis, ce n'est pas "Javascript ou Ajax", mais plutôt "Ajax donc Javascript"
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 <html> <body> <script type="text/javascript"> var doc = null; if (window.ActiveXObject) doc = new ActiveXObject("Microsoft.XMLDOM"); else doc = document.implementation.createDocument("","",null); doc.async=false; doc.load("file.xml"); var root = doc.documentElement; alert(root); </script> </body>
Pour tout savoir sur l'utilisation du forum
En postant votre message, n'oubliez pas les Règles du Club.
Désolé de faire mon tatillon, mais je ne suis pas tout à fait d'accord avec ça...
Certes, il est possible de récupérer des fichiers en local en utilisant le modèle de requête Ajax, sauf que ce n'est ici qu'une utilisation impropre de l'objet XMLHttpRequest.
Pour faire cela, tu ne peux plus passer par un protocole http qui est pourtant l'essence même de XMLHttpRequest ! De plus, impossible de travailler avec les codes retour (readyState et satus).
Enfin, l'argument 'qui tue' :
La source ici, on ne peut plus fiable...The XMLHttpRequest Object specification defines an API that provides scripted client functionality for transferring data between a client and a server.
Mais bon, tout cela ne sert qu'à chipoter et n'est que question de point de vue et de terminologie.
En guise de conclusion, tu as malgré tout raison de dire qu'une requête de type Ajax peut récupérer des données en local, mais selon moi, ce n'est plus de l'Ajax...
Mille fois d'accord et ça a déjà été dit assez souvent, mais j'ai peur que l'on soit encore obligés de le répéter souvent !![]()
Pas de question technique par MP !
Tout le monde peut participer à developpez.com, vous avez une idée, contactez-moi !
Mes formations video2brain : La formation complète sur JavaScript • JavaScript et le DOM par la pratique • PHP 5 et MySQL : les fondamentaux
Mon livre sur jQuery
Module Firefox / Chrome d'intégration de JSFiddle et CodePen sur le forum
DoubleU, merci pour ton début de script.
Le but pour moi est de parser un fichier xml, et de pouvoir faire des recherches dessus, afficher un tableau par exemple etc...
@Bovino > je simplifie en assimilant Ajax à XMLHttpRequest + Javascript, mais d'accord sur le reste.
Sauf sur l'argument qui tue : il s'agit d'une phrase d'introduction descriptive : ce n'est pas parce qu'un parapluie fournit un moyen efficace de se protéger de la pluie, qu'il ne peut pas être utilisé pour se protéger tout aussi efficacement du soleil
Mais tu peux ajouter dans ta feuille de style :
Code : Sélectionner tout - Visualiser dans une fenêtre à part tatillon : absolute;
@Go_ahead :
C'est bien là-dessus qu'on t'a répondu ...
Qu'est-ce qui ne va pas ?
A+
Pour tout savoir sur l'utilisation du forum
En postant votre message, n'oubliez pas les Règles du Club.
Le fait que ça ne fonctionne pas, mais aussi je souhaiterais afficher sous forme de tableau un noeud complet...C'est bien là-dessus qu'on t'a répondu ...
Qu'est-ce qui ne va pas ?
Pour tout savoir sur l'utilisation du forum
En postant votre message, n'oubliez pas les Règles du Club.
Pas de question technique par MP !
Tout le monde peut participer à developpez.com, vous avez une idée, contactez-moi !
Mes formations video2brain : La formation complète sur JavaScript • JavaScript et le DOM par la pratique • PHP 5 et MySQL : les fondamentaux
Mon livre sur jQuery
Module Firefox / Chrome d'intégration de JSFiddle et CodePen sur le forum
Alors je suis parti du code et je me rends compte que j'ai une erreur à cause du :Qu'est-ce qui ne va pas ?j'ai cette erreur : [object], il ne reconnait pas l'objet 'root'..alert(root);
En plus de cela, je souhaiterais mettre en forme le resultat sous forme de tableau et pas en alert...
Merci pour votre aide.
En fait, je t'avais juste mis cette ligne pour illustrer le fait que root contient le noeud racine de ton arbre xml.
Apres, tu peux faire tes traitements (mettre en tableau?) dessus.
Si l'erreur est d'afficher [Object] dans un alert, la solution est simple, ne demande pas d'afficher un alert sur un objet !
Désolé, plus sérieusement, ça montre au contraire que ça marche, maintenant, à toi de naviguer dans le xml pour récupérer les données que tu veux.
Pas de question technique par MP !
Tout le monde peut participer à developpez.com, vous avez une idée, contactez-moi !
Mes formations video2brain : La formation complète sur JavaScript • JavaScript et le DOM par la pratique • PHP 5 et MySQL : les fondamentaux
Mon livre sur jQuery
Module Firefox / Chrome d'intégration de JSFiddle et CodePen sur le forum
Tout d'abord merci pour vos réponses.
Ok je viens de comprendre pour quelles raisons j'ai ce type d'affichage...En fait, je t'avais juste mis cette ligne pour illustrer le fait que root contient le noeud racine de ton arbre xml.
Mon fichier xml contient plusieurs noeud, et je souhaiterais faire un outil de recherche assez rapide, et donc avoir en sortie un tableau, après avoir rempli certains champs de recherche.
Je cherchais simplement voir si de tels exemples étaient dispo, pour me faciliter un peu le boulot.
Voici ce que j'ai :
bdd.xml
fichier .js :
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 <?xml version="1.0" encoding="iso-8859-1" ?> <bibliotheque> <livre> <nom>Le guet des orfèvres</nom> <auteur>Terry Pratchett</auteur> <date>1993</date> </livre> <livre> <nom>Nobliaux et sorcières</nom> <auteur>Terry Pratchett</auteur> <date>1992</date> </livre> <livre> <nom>Mécomptes de fées</nom> <auteur>Terry Pratchett</auteur> <date>1991</date> </livre> </bibliotheque>
fichier .html :
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 function loadXML(){ if (document.implementation && document.implementation.createDocument) { // déclaration pour Mozilla et FF docXml = document.implementation.createDocument('', '', null); } else if (window.ActiveXObject){ // déclaration pour IE docXml = new ActiveXObject("Microsoft.XMLDOM"); } else { alert('Votre navigateur ne saurait pas éxécuter ce script.'); } docXml.load("bdd.xml"); } function biblio(num) { var numero = parseInt(num, 10); var book = docXml.getElementsByTagName('nom'); var author = docXml.getElementsByTagName('auteur'); var parution = docXml.getElementsByTagName('date'); document.forms[0].elements[2].value = book[numero].firstChild.nodeValue; document.forms[0].elements[3].value = author[numero].firstChild.nodeValue; document.forms[0].elements[4].value = parution[numero].firstChild.nodeValue; } window.onload = function() { document.forms[0].reset(); loadXML(); document.forms[0].elements[1].onclick = function() { biblio(document.forms[0].elements[0].value); }; };
Voila, le procédé me plait sauf que j'aimerais modifié l'affichage, la il se fait sur des input, pour moi j'aimerais afficher le resultat de ma recherche dans un tableau.
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 <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3c.org/TR/xhtml1/DTD/xhtml1-strict.dtd"> <html xmlns="http://www.w3.org/1999/xhtml" xml:lang="fr-BE" lang="fr-BE"> <head> <link rel="stylesheet" type="text/css" href="css/styles.css" media="screen" /> <script type="text/javascript" src="Js_script.js"></script> </head> <body> <div id="all-box"> <form action="#"> <p> <label> Afficher le <select name="setBook" size="1"> <option value="0" selected="selected">premier</option> <option value="1">deuxieme</option> <option value="2">troisieme</option> </select> livre de la bibliotheque. <input type="button" value="valider" /> </label> </p> <p> Titre: <input type="text" value="" size="30" /> </p> <p> Auteur: <input type="text" value="" size="20" /> </p> <p> Annee de parution en langue originale: <input type="text" value="" size="5" /> </p> </form> </div> </body> </html>
J'espere avoir l'aide d'un expert en javascript...
Merci à ceux qui pourront m'aider.
Ben... fais un tableau et insère tes résultats dedans...
Où as-tu un problème ?
Pas de question technique par MP !
Tout le monde peut participer à developpez.com, vous avez une idée, contactez-moi !
Mes formations video2brain : La formation complète sur JavaScript • JavaScript et le DOM par la pratique • PHP 5 et MySQL : les fondamentaux
Mon livre sur jQuery
Module Firefox / Chrome d'intégration de JSFiddle et CodePen sur le forum
Le probleme c'est l'automatisation.Ben... fais un tableau et insère tes résultats dedans...
Où as-tu un problème ?
Je devrais remplacer dans le .jspar
Code : Sélectionner tout - Visualiser dans une fenêtre à part document.forms[0]...dans une boucle de préference...
Code : Sélectionner tout - Visualiser dans une fenêtre à part document.write("<table>")...
Et aussi l'autre probleme, c'cest que je souhaiterais faire des recherches sur les valeurs des noeuds et pas sur les id ... mais je ne sais pas comment faire.
Bon, déjà, document.write(), c'est pas très joli... Il existe des méthodes plus propres pour créer et insérer des éléments dans une page.
Du style :
et insertRow(), insertCell().
Code : Sélectionner tout - Visualiser dans une fenêtre à part document.createElement('table')
Tu peux facilement créer des boucles avec ces instructions.
Pour ce qui est des valeurs de noeuds, le plus compliqué est d'atteindre le noeud en question (gestion différente selon que tu utilises IE ou un navigateur...), ensuite, récupérer la valeur du noeud est plutôt simple (nodeValue).
Documente toi sur le DOM.
Pas de question technique par MP !
Tout le monde peut participer à developpez.com, vous avez une idée, contactez-moi !
Mes formations video2brain : La formation complète sur JavaScript • JavaScript et le DOM par la pratique • PHP 5 et MySQL : les fondamentaux
Mon livre sur jQuery
Module Firefox / Chrome d'intégration de JSFiddle et CodePen sur le forum
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