Rechercher : dans
Par :

Transmission flux XML entre PHP et AJAX

Dernière réponse le 3 nov 2007 à 09:12:12 Nasspower, le 2 nov 2007 à 09:05:02 
 Signaler ce message aux modérateurs

Bonjour,
Je suis un nouvel utilisateur d'AJAX et j'ai le souci suivant :
Je voudrai recuperer les donnees d un fichier XML type ceci :


<?xml version="1.0"?>
<answer size="100">super
<doc id="train/location001.view0001.jpg" w="0.409906" idcollect="STOIC" fmt="JPEG" href="http://ipal-server/stoic/train/location001.view0001.jpg"></doc>
</answer>

Je sais qu on peut lire directement dans le fichier et traiter les donnees avec javascrpit, mais en fait le nom du fichier est cree par du php et je n ai aucun moyen de le recuperer, donc je ne peux pas directement acceder au fichier en JS.
Mon idee est alors de lire le fichier xml avec PHP et d'envoyer tout ca au JS avec AJAX et responseText.

Probleme : Ca marche pas. Je ne peux traiter la chaine recue comme un objet xml, js ne veut pas. d'ailleurs je n arrive meme pas a l afficher!!! Je pense que js comprend que c est du xml et que c'est pour ca.

Qqn a t il une idee???

Merci d avance!

Configuration: Linux
Firefox 2.0.0.6

Meilleures réponses pour « Transmission flux XML entre PHP et AJAX » dans :
PHP - Parser du XML Voir Introduction à XML PHP permet l'analyse syntaxique (parsage ou parsing en anglais) d'un document XML. Le langage XML (eXtensible Markup Language, traduisez Langage à balises extensibles) est un métalangage, c'est-à-dire un langage permettant de...
Télécharger Notepad2 VoirNotepad2 est un bloc-note sans installation libre possédant des fonctionnalités avancées de coloration syntaxique. Fonctionnalités Coloration syntaxique pour les langages suivants : HTML, XML, PHP, ASP (JScript, VBS), CSS, JavaScript, VBScript,...
RSS - Syndication de contenu VoirIntroduction au RSS Le standard RSS représente un moyen simple d'être tenu informé des nouveaux contenus d'un site web, sans avoir à le consulter. Le format « RSS » (traduisez « Really Simple Syndication ») permet ainsi de décrire de façon...
AJAX (Asynchronous Javascript And XML) VoirIntroduction à AJAX AJAX (Asynchronous Javascript And XML, traduisez Javascript asynchrone et XML) est une méthode de développement web basée sur l'utilisation d'un script Javascript pour effectuer des requêtes web à l'intérieur d'une page web...

1

burnedsyn, le 2 nov 2007 à 16:38:20

Utilise responsexml...
function ajax_xml() {
request.open('POST',"testajax.php", true);
request.setRequestHeader('Content-Type', 'application/x-www-form-urlencoded');
request.send("&type=xml");
request.onreadystatechange = function(){ if(request.readyState == 4){
var answer = request.responseXML.documentElement;
document.write(answer.getElementsByTagName("text")[0].firstChild.length);
}
}
}

enfin c'est une piste

Tim

Répondre à burnedsyn

2

nasspower, le 3 nov 2007 à 04:14:21

Bonjour,
Merci de ta reponse mais ca ne marche pas!!! Ou alors je n'y arrive pas!!! J'envoie par echo avec php la chaine suivante par ex :

<?xml version="1.0"?>
<answer size="100">super
<doc id="train/location001.view0001.jpg" w="0.409906" idcollect="STOIC" fmt="JPEG" href="http://ipal-server/stoic/train/location001.view0001.jpg"></d oc>
</answer>

Si je le récupère avec responseText, et que je demande de l'afficher dans une balise div par ex avec inner.html il ne le fait pas car il comprend que c'est du xml.

Si je le récupère avec responseXML et que je lui applique des fonctions dom type getElementByTagName(), rien ne se passe non plus...

J'ai essayé d'envoyer de le charger avec simpleXML_load_file sous php et de l'envoyer apres pour le récupérer avec responseXML rien n'y fait....pas cool!!!

Répondre à nasspower

3

 burnedsyn, le 3 nov 2007 à 09:12:12

<?php
$fichier = "./somedoc.xml";
// fonction de traitement des balises ouvrantes
function fonctionBaliseOuvrante($parseur, $nomBalise, $tableauAttributs)
{
// En fait... nous nous conteterons de mémoriser le nom de la balise
// afin d'en tenir compte dans la fonction "fonctionTexte"

global $derniereBaliseRencontree;
global $attribtab;
$derniereBaliseRencontree = $nomBalise;
$attribtab=$tableauAttributs;
echo("<br>voila la balsie >>");
print_r($derniereBaliseRencontree);
echo("<br>voila le tableau d'attribut c'est plus clair <br>");
print_r($attribtab);

}

// fonction de traitement des balises fermantes
function fonctionBaliseFermante($parseur, $nomBalise)
{
// On oublie la dernière balise rencontrée
global $derniereBaliseRencontree;

/* $derniereBaliseRencontree = "";

global $attribtab;

$attribtab="";*/

}

// fonction de traitement du texte
// qui est appelée par le "parseur"
function fonctionTexte($parseur, $texte)
{
global $derniereBaliseRencontree;
global $attribtab;
//echo ("test $derniereBaliseRencontree <br >");
// ATTENTION: Par défaut les noms des balises sont
// mises en majuscules
switch ($derniereBaliseRencontree) {
case "ANSWER":
echo("<br>ici on y est dans answer<br>");
echo "voici le texte de answer <b>".$texte."</b>;
break;
case "DOC":
echo("ici on y est dns doc");
echo $texte;
echo("alors ? rien au dessus tout en dessous... ben c un tableau d'attribut");
print_r($attribtab);
break;

}
}


// Création du parseur XML
$parseurXML = xml_parser_create();

xml_set_element_handler($parseurXML, "fonctionBaliseOuvrante"
, "fonctionBaliseFermante");

xml_set_character_data_handler($parseurXML, "fonctionTexte");

// Ouverture du fichier
$fp = fopen($fichier, "r");
if (!$fp) die("Impossible d'ouvrir le fichier XML");

// Lecture ligne par ligne
while ( $ligneXML = fgets($fp, 1024)) {
// Analyse de la ligne
// REM: feof($fp) retourne TRUE s'il s'agit de la dernière
// ligne du fichier.
//echo ("$ligneXML");
xml_parse($parseurXML, $ligneXML, feof($fp)) or
die("Erreur XML");





}

xml_parser_free($parseurXML);
fclose($fp);


?>

j'espère que cela peux t'aider
aussi si tu as le pouvoir de formater le xml tu peux aussi faire...
des balise pour chaque paramètres et mettre la valeur dans la balise ou dans un [!CDATAtavaleur]]
voila j'espère que cela t'aidera

Tim

Répondre à burnedsyn
Collection CommentÇaMarche.net