[AJAX] Erreur AJAX et débuggeur en panne
Bonjour,
J'ai le code suivant qui fonctionne (fichier reponse.php) :
Code:
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 qui crée le fichier XML suivant ( avec la commande : echo $films->asXML("films.xml") ) :
Code:
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> |
... et le code AJAX pour lire et afficher les films dans le navigateur :
Code:
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> |
Quand je lance le script PHP : celui-ci crée bien le fichier XML et le renvoie au navigateur.
Par contre le navigateur me renvoie ce type d'erreur :
Code:
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'>
^ |
... 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:
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); |
Pouvez-vous m'aider pour enfin résoudre ce problème car cela fait bien longtemps que je planche sur celui-ci.
Merci d'avance.
A+ ;)