[AJAX] Récupérer le résultat d'une requête mySql stockée dans un fichier PHP
Bonjour,
Pour développer un module Prestashop ( slider lié à une base mySql ) il me reste une étape que je n'arrive pas à franchir.
Je souhaite passer une requête Ajax (sans jQuery), qui aille exécuter un fichier PHP contenant une requête mySql. Je voudrais ensuite pouvoir traiter la réponse de cette requête dans le Javascript (informations textuelles uniquement ).
Voici le code dans mon fichier JS (juste la partie concernée):
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
| function getXMLHttpRequest() {
var xhr = null;
if (window.XMLHttpRequest || window.ActiveXObject) {
if (window.ActiveXObject) {
try {
xhr = new ActiveXObject("Msxml2.XMLHTTP");
} catch(e) {
xhr = new ActiveXObject("Microsoft.XMLHTTP");
}
} else {
xhr = new XMLHttpRequest();
}
} else {
alert("Votre navigateur ne supporte pas l'objet XMLHTTPRequest...");
return null;
}
return xhr;
}
var xhr = getXMLHttpRequest();
xhr.open("GET", "ajaxslider.php", true);
xhr.send(null); |
Et voici le code de ajaxslider.php :
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22
| <?php
$slides = Db::getInstance(_PS_USE_SQL_SLAVE_)->executeS('
SELECT hs.`id_homeslider_slides` as id_slide,
hssl.`image`,
hss.`position`,
hss.`active`,
hssl.`title`,
hssl.`url`,
hssl.`legend`,
hssl.`description`
FROM '._DB_PREFIX_.'homeslider hs
LEFT JOIN '._DB_PREFIX_.'homeslider_slides hss ON (hs.id_homeslider_slides = hss.id_homeslider_slides)
LEFT JOIN '._DB_PREFIX_.'homeslider_slides_lang hssl ON (hss.id_homeslider_slides = hssl.id_homeslider_slides)
WHERE (id_shop = '.(int)$id_shop.')
AND hssl.id_lang = '.(int)$id_lang.
($active ? ' AND hss.`active` = 1' : ' ').'
ORDER BY hss.position');
return $slides;
?> |
Ensuite, au chargement de la page, je vais dans Firebug qui me dit dans Headers : "status 404", puis dans Réponse, j'ai tout le code de la page d'accueil du site...
J'ai même essayé en mettant en simple echo dans le fichier ajaxslider.php, mais idem.
Pour la fonction getXMLHttpRequest, j'ai essayé environ 20 méthodes différentes d'Ajax pour traiter ma réponse, toute me retournent la même réponse.
Merci d'avance :p
L'erreur est encore la même
J'ai modifié le fichier php par un simple echo pour tester, mais j'ai toujours l'intégralité de la page d'acceuil de mon site dans le réponse Ajax.
J'ai aussi relevé que je ne rentre pas dans cette boucle :
Code:
1 2 3 4
| if (MonAjax.readyState == 4 && MonAjax.status == 200)
{
document.getElementById('toto').innerHTML = MonAjax.responseText;}
} |
*J'ai enlever une accolade sur la ligne au dessus de MonAjax.setRequestHeader, elle était en trop je crois.
Voici mes fichiers tels qu'ils sont maintenant :
Fichier JS :
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23
| function maFonctionAjax()
{
var MonAjax;
if (window.XMLHttpRequest){ MonAjax = new XMLHttpRequest();}
else if (window.ActiveXObject) {MonAjax = new ActiveXObject('Microsoft.XMLHTTP');}
else {
alert("Votre navigateur n'est pas adapté pour faire des requêtes AJAX...");
MonAjax = false;
}
MonAjax.open('POST',"ajaxslider.php",true);
MonAjax.onreadystatechange = function()
{
document.getElementById('header').innerHTML = MonAjax.responseText;
alert(MonAjax.responseText);
}
MonAjax.setRequestHeader('Content-type','application/x-www-form-urlencoded');
MonAjax.send();
}
maFonctionAjax(); |
ajaxslider.php
Code:
1 2 3 4 5 6
| <?php
echo "TEST AJAX";
?> |