Bonjour,
Dans mon controller, j'ai ce code:
Et dans ma vue, je veux récupérer le xml envoyé par le code ci-dessus.
J'utilise le code suivant:
Pour enfin en venir à mon problème.
Le alert(docXml) affiche bien le xml envoyer par le controller sauf qu'au lieu de n'envoyer que ça, il met à la suite tout le code de la page:
<Doctype...> et tout le reste du code html de ma page.
Je ne sais pas pourquoi je ne récupère pas juste le xml.
Si quelqu'un à une idée, elle serait la bienvenue parce que je n'en peux plus!!
Je débute tout juste avec ajax et javascript.
Merci d'avance
Modifié par leoetevan (31 Jan 2011 - 16:03)
Dans mon controller, j'ai ce code:
if ($_REQUEST['tvSelect'] != null)
{
$tvSelect = $_REQUEST['tvSelect'];
$cond = array('recursive' => 0, 'conditions'=>'Webtv.slug = "'.$tvSelect.'"', 'order' => 'Episode.id DESC', 'limit' => 12 ,'fields' => array('Episode.webtv_id', 'Episode.title', 'Episode.description', 'Episode.vignette', 'Episode.created', 'Episode.slug'));
$listEpi = $this->Episode->find('all', $cond);
$lien1Href = array();
$lien1Img = array();
$lien2Href = array();
$lien2Titr = array();
$descript = array();
$date = array();
foreach ($listEpi as $episode)
{
$description = $this->troncature($episode['Episode']['description']);
$webtvId = $episode['Episode']['webtv_id'];
if ($webtvId == 3 || $webtvId == 4)
{
$lien1Href[] = '/episodes/view/'.$episode['Episode']['slug'];
$lien1Img[] = '/img/tv/'.$episode['Episode']['vignette'];
$lien2Href[] = '/episodes/view/'.$episode['Episode']['slug'];
$lien2Titr[] = $episode['Episode']['title'];
$descript[] = $description;
$date[] = $this->getDatefrcourt($episode['Episode']['created']);
}
}
header('Content-Type: text/xml');
echo '<'.'?xml version="1.0" encoding="ISO-8859-1"?'.'>'."\n";
<listEpisodes>
<lien1Href><?php echo $lien1Href; ?></lien1Href>
<lien1Img><?php echo $lien1Img; ?></lien1Img>
<lien2Href><?php echo $lien2Href; ?></lien2Href>
<lien2Titr><?php echo $lien2Titr; ?></lien2Titr>
<descript><?php echo $descript; ?></descript>
<date><?php echo $date; ?></date>
</listEpisodes>
<?php } ?>
Et dans ma vue, je veux récupérer le xml envoyé par le code ci-dessus.
J'utilise le code suivant:
/**La fonction qui sert à envoyer vers le php */
function getListEpisodes ()
{
/**Je récupère l'élement html <select> */
var selectElmt = document.getElementById("List");
/**Je récupère la valeur du select affin de l'envoyer au script php ci-dessus */
var valSelect = selectElmt.options[selectElmt.selectedIndex].value;
/**J'utilise prototype.js */
var url = '';
var req = new Ajax.Request(
url,
{
method: 'get',
parameters: 'tvSelect='+valSelect,
onSuccess: actualiserPage,
onFailure: afficherErreur
}
);
}
/**La fonction qui récupère le xml envoyé par le controller et qui me permettra d'afficher les nouveaux éléments dans ma page */
function actualiserPage(requete)
{
/**Je sais qu'ici il faut utiliser responseXML mais je voulais voir ce qu'il y avait dedans d'où le responseText */
var docXml = requete.responseText;
alert(docXml);
}
Pour enfin en venir à mon problème.
Le alert(docXml) affiche bien le xml envoyer par le controller sauf qu'au lieu de n'envoyer que ça, il met à la suite tout le code de la page:
<Doctype...> et tout le reste du code html de ma page.
Je ne sais pas pourquoi je ne récupère pas juste le xml.
Si quelqu'un à une idée, elle serait la bienvenue parce que je n'en peux plus!!
Je débute tout juste avec ajax et javascript.
Merci d'avance
Modifié par leoetevan (31 Jan 2011 - 16:03)