Page 1 sur 1

Gérard AJAX ou l'art de filtrer un affichage

Posté : 16 sept. 2013, 17:59
par Megadeth
Re-Bonjour,

Je pense que mon bonheur est dans ajax je m'explique, peut être saurez vous me répondre.

Soit une liste construite avec PHP et je voudrais qu'en sélectionnant un élément de ma liste ca m'exécute une requête mysql qui me renvoie un résultat et que je passe ce résultat dans une moulinette javascript pour filtrer un affichage sans recharger ma page svp messieurs dames ^^. Quelqu'un a t-il déjà fait cela ? C'est bien avec ajax que je vais pouvoir faire cela ?

Mega
;)

Re: Gérard AJAX ou l'art de filtrer un affichage

Posté : 17 sept. 2013, 10:08
par Berzemus
Ma foi, ça me semble assez standard, donc oui.

Re: Gérard AJAX ou l'art de filtrer un affichage

Posté : 17 sept. 2013, 10:23
par Megadeth
Bonjour Berzemus et merci pour ta réponse.

Si je résume c'est une exécution php à la sélection via la combo, sans recharger un résultat de query et une action javascript en conséquence.

Ca correspond bien ? Aurais-tu une piste à me conseiller, je suis assez noob dans ce domaine.

J'ai vu qu'il existait plusieurs librairies, autant choisir la bonne ou le bon tuto :)

Mega
;)

Re: Gérard AJAX ou l'art de filtrer un affichage

Posté : 17 sept. 2013, 12:46
par Megadeth
Re re,

J'ai rajouté ceci dans ce script :

...
alert(xhr.responseText);
}
}
xhr.open("POST","ajax_post.php",true);
xhr.send("joueur1=megadeth&joueur2=berzemus");
...

et dans mon ajax_post.php j'ai fait simplement un :
<?php
echo "Bonjour ".$_POST["joueur1"].", bonjour ".$_POST["joueur2"];
?>

mais ca ne m'affiche pas dans mon alert bonjour megadeth, bonjour berzemus...mais pas mal d'html avec un petit bonjour à la fin.

Je suis parti de ce tuto : http://siddh.developpez.com/articles/ajax/

Bien à vous,

Mega
;)

Re: Gérard AJAX ou l'art de filtrer un affichage

Posté : 17 sept. 2013, 12:55
par Megadeth
Pour ceux que ça intéresse il manquait la ligne :
xhr.setRequestHeader("Content-type", "application/x-www-form-urlencoded");

Tu confirmes berzemus ? Vous confirmez dans les best pratices ?

Mega
;)

Re: Gérard AJAX ou l'art de filtrer un affichage

Posté : 17 sept. 2013, 15:45
par Berzemus
Pour ceux que ça intéresse il manquait la ligne :
xhr.setRequestHeader("Content-type", "application/x-www-form-urlencoded");

Tu confirmes berzemus ? Vous confirmez dans les best pratices ?

Mega
;)
Un best-practice ne conseillerait pas d'utiliser du "vanilla" javascript, mais de laisser une bibliothèque (genre jQuery, qui à pourtant quelques années déjà) s'occuper des subtilités techniques et des problèmes de compatibilité.

Mais c'est bien de le faire sans l'aide de rien, pour voir comment ça fonctionne.

Et le bon MIME pour le json, c'est "application/json".

Re: Gérard AJAX ou l'art de filtrer un affichage

Posté : 17 sept. 2013, 16:06
par Megadeth
Re,

Comme tu peux voir, je ne suis pas du tout expert ajax/javascript. J'utilise un peu jquery mais tu vois je ne savais même pas que cette bibliothèque pouvait faire cela. Je l'utilise principalement pour des gérer des animations, diaporama...et autres fonctions de style on va dire.

J'ai corrigé le content-type comme indiqué, par contre sous IE j'ai un accès refusé sur la ligne xhr.open...Tu connais cette erreur, une idée ?
xhr.open("POST","ajax_post.php",true);
xhr.setRequestHeader("Content-type", "application/json");

Je tâtonne et mon autre question était de savoir comment faire pour exploiter les résultats d'une requête issus de ma page PHP. J'ai fait un truc qui marche mais là encore vanilla or not lol ? Au niveau de l'alerte(xhr.responseText); j'ai splité mes valeurs, c'est comme ça que tu procèdes aussi ? Afin de passer chaque valeur dans une moulinette javascript...Par avance merci de ton/votre retour d'expérience.

Mega
;)

Re: Gérard AJAX ou l'art de filtrer un affichage

Posté : 19 sept. 2013, 11:07
par Berzemus
Le principe bien établi, de nos jours, est d'utiliser JSON.

JQuery (qui doit sa notoriété en bonne partie à sa facilitisation de l'utilisation d'AJAX) à d'ailleurs une méthode tout faite, $.getJSON(). Ca te retourne un object javascript tout fait, pas besoin de bricoler.

Regarde ce qu'offre jQuery dans le domaine, c'est très intéressant.

Re: Gérard AJAX ou l'art de filtrer un affichage

Posté : 23 sept. 2013, 21:53
par Genova
Avec jQuery faire de l'ajax c'est ultra simple. Un exemple :

[javascript]$.ajax({
url: 'ton/fichier.php',
method: 'post',
data: {
foo: 'bar'
},
dataType: 'json',

success: function(data)
{
alert(data.message);
}
});[/javascript]

Et pour le PHP (ton/fichier.php) :
<?php
die(json_encode(array(
   'message' => 'Hello '.$_POST['foo'],
)));
Ce qui devrait te lancer une alerte "Hello bar".

Perso je préfère faire directement $.ajax plutôt que $.getJSON histoire d'avoir bien la main sur tout.

++