Bonjour,
J'ai le code suivant qui fonctionne (fichier reponse.php) :
... et qui crée le fichier XML suivant ( avec la commande : echo $films->asXML("films.xml") ) :
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 <?php include_once 'Film.class.php'; $tabFilms = array(); $tabFilms[] = new Film("1234", "Le beau frère", "Divertissement", "Un beau frère qui ne se trouve pas beau.", 1980); $tabFilms[] = new Film("5678", "Le masque de zéro", "Divertissement", "Un zéro qui ne se masque pas", 1982); $films = new SimpleXMLElement("<films></films>"); foreach ($tabFilms as $f) { $film = $films->addChild("film"); $film->addAttribute("reference", $f->getReference()); $film->addChild("titre", $f->getTitre()); $film->addChild("resume", $f->getResume()); $film->addChild("annee", $f->getAnnee()); } header('Content-Type: text/xml; charset=utf-8'); echo $films->asXML(); ?>
... et le code AJAX pour lire et afficher les films dans le navigateur :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13 <?xml version="1.0"?> <films> <film reference="1234"> <titre>Le beau frère</titre> <resume>Un beau frère qui ne se trouve pas beau.</resume><annee>1980</annee> </film> <film reference="5678"> <titre>Le masque de zéro</titre> <resume>Un zéro qui ne se masque pas</resume> <annee>1982</annee> </film> </films>
Quand je lance le script PHP : celui-ci crée bien le fichier XML et le renvoie au navigateur.
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 <!DOCTYPE h1 PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"> <html> <head> <title>Demande de la liste des films</title> <meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> </head> <body> <form id='idForm' name='ajax' method='post' action="http://localhost/ajax/reponse.php"> <p>Pour afficher les films, cliquez ici :</p> <input type="submit" id='boutonSubmit' class='bouton' title="Demander liste des films" /> </form> <div id='message'></div> <!-- JQUERY LIBRARY --> <script type='text/javascript' src='jquery.js'></script> <script type='text/javascript'> $(document).ready(function() { $('#boutonSubmit').click(function() { var page = $('#idForm').attr('action'); var methode = $('#idForm').attr('method'); $.ajax ({ url: page, type: methode, cache: false, async: false, timeout: 4000, // data: $('#idForm').serialize(), dataType: 'xml', success: function(xml) { $(xml).find('film').each( function() { var reference = $(this).attr('reference'); var titre = $(this).find('titre').text(); var resume = $(this).find('resume').text(); var annee = $(this).find('annee').text(); var info = "==== FILM DE REFERENCE : " + reference + " ====\nTITRE : " + titre + "\nRESUME : " + resume + "\nANNEE : " + annee + "\n\n" + ; afficher(info); }); }, error: function (XMLHttRequest, textStatus, errorTrows) { afficher("ERREUR"); } }); return false; }); }); function afficher(info) { $('#message').empty(); $('#message').append(info); } </script> </body> </html>
Par contre le navigateur me renvoie ce type d'erreur :
... dans le navigateur le debuggeur js ne démarre même pas sauf quand je retire les ligne suivantes du script js (reproduit ci-après OU en gras dans le code au dessus) :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5 Erreur d'analyse XML : données incompréhensibles après l'élément de document Emplacement : http://localhost/ajax/reponse.php Numéro de ligne 2, Colonne 1 :<font size='1'><table class='xdebug-error' dir='ltr' border='1' cellspacing='0' cellpadding='1'> ^
Pouvez-vous m'aider pour enfin résoudre ce problème car cela fait bien longtemps que je planche sur celui-ci.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8 var reference = $(this).attr('reference'); var titre = $(this).find('titre').text(); var resume = $(this).find('resume').text(); var annee = $(this).find('annee').text(); var info = "==== FILM DE REFERENCE : " + reference + " ====\nTITRE : " + titre + "\nRESUME : " + resume + "\nANNEE : " + annee + "\n\n" + ; afficher(info);
Merci d'avance.
A+![]()
Partager