− Table des matières
Bien que le terme AJAX précise qu'une réponse doit être en XML (d'où le X dans AJAX), AJAX est souvent utilisé avec d'autres types de format.
Selon ce que vous attendez côté client, soit dans la propriété responseText, soit dans la propriété responseXml de l'objet xmlHttpRequest, vous utiliserez un objet jResponse différent.
- Pour tout ce qui est contenu XML quelconque, vous utiliserez jResponseXml
- Pour des réponses en JSON, vous utiliserez jResponseJson
- Pour renvoyer des fragments de code HTML, il ne faut pas utiliser
jResponseHtml
, maisjResponseHtmlFragment
(voir exemple ci-dessous). - Dans les autres cas, vous utiliserez certainement jResponseText.
Dans votre controleur, vous pouvez utiliser jApp::coord()->request->isAjax()
pour vérifier que la requête est une vrai requête AJAX (envoyée donc avec
XMLHttpRequest).
Renvoyer des fragments de code HTML ¶
Il ne faut pas utiliser jResponseHtml
, car cet objet génère tout ce qu'il
faut pour une page HTML : le <head>
, le <body>
etc... Bien souvent, dans
une requête AJAX, on ne veut récupérer qu'un fragment de code HTML.
jResponseHtmlFragment
est adaptée pour cela :
$rep = $this->getResponse('htmlfragment');
$mavariable = ...
// html à renvoyer
$rep->addContent( '<p>'.$mavariable.'</p>' );
// ou aussi par un template
$rep->tplname='monapp~tpl_pour_ajax';
$rep->tpl->assign('variable', $mavariable);
return $rep;