11548 sujets

JavaScript, DOM et API Web HTML5

Bonjour à tous.

Je souhaiterais savoir comment on peut faire pour que la fonction $.ajax de Jquery retourne du code php.

Je m'explique.

J'ai deux pages php.
- L'une est la page index.php contenant le cadre du site etc.
- L'autre est la page affichage.php, laquelle va récupérer des données via une requête SQL et qui, à partir de là, met en forme un petit tableau avec des div contenant les données récupérées.

Mon problème, c'est que la fonction $.ajax() me retourne du HTML, donc toute ma mise en forme se trouvant dans des balises PHP, et étant traduite par des "echo" ne s'affiche pas.


Mon souhait de départ, c'est que à l'ouverture de la page index, le tableau de données s'affiche via la fonction $.ajax appelant la page affichage.php. Et que lorsque je supprime une données (via un lien hypertexte qui appel un page de suppression, mais c'est pas important) l'affichage des données se mettent à jours. Du coup j'avais pensais à rappeler la page affichage par la fonction $.ajax().

J'ai bien conscience que ce n'est peut être pas la meilleure solution de récupérer toutes les données à chaque suppressions, donc si vous avec une autre solution, je suis open.

Merci d'avance pour votre intérêt.
Modifié par WyLLoU (17 Feb 2010 - 16:38)
Je ne pense pas que la méthode soit idéale, avec ta façon de faire, le site serait inutilisable sans Javascript.

La marche à suivre pour éviter ce problème, c'est de faire dans un premier temps son site sans la navigation par JS, puis de l'implémenter, comme ça tu es sûr que ton site est naviguable sans Javascript activé !

Ensuite, pour la mise en place. Si tu utilise un framework Php (comme Zend, CakePhp, CodeIgniter ou autre) il est la plupart du temps possible de savoir si la requête est de type HTML (en cliquand sur un lien) ou AJAX (via Javascript). Dans ce cas là, un simple if te permet de gérer la mise en forme de ton contenu suivant les cas, soit afficher l'ensemble de la page (requete html) soir juste le contenu à intégrer dans la page actuelle (requete ajax).

Pour ce qui est de la version ou tu code en Php "normalement", dans ce cas, le plus simple serait de faire des fonctions pour gérer toutes tes manipulations (Bdd, modifications, variables, etc etc) et de faire 2 fichiers différents une pour l'affichage complet, un pour l'affichage via Ajax, et d'appeller ce fichier différents avec ta requête ajax en Javascript.
L'intérêt de commencer par tout coder en fonctions, c'est un peu comme avec les inludes, tu réutilise le même code pour 2 fonctions identiques (page normale/ajax) et tu peux odifier les 2 d'un coup Smiley lol



Pour ce qui est de la suppression... Tout récupérer une nouveles fois n'est pas forcément nécessaire, si tu peux vérifier que ta suppression a bien été prise en compte (avec return true, par exemple) tu peux te contenter de supprimer l'affichage uniquement. Résultat : tu sais que l'enregistrement a bien été supprimé, l'enregistrement en question n'est plus affiché.

Si c'est pour une application ou toutes les données peuvent changer souvent (multiutilisateurs par eemple) dans ce cas là, tout réactualiser peut être mieux mais ça n'est pas forcément nécessaire !
Modifié par HammHetfield (17 Feb 2010 - 12:24)
Merci pour ses infos HammHetfield.

Suite à mon post, je suis partis sur une autre façon de faire.
Je continus d'utiliser mes fonction ajax pour l'ajout et la suppression de données.
Par contre pour l'actualisation de l'affichage, je triche un peu.
Au lieu de réactualiser, je cache uniquement le bloc contenant la donnée à supprimer.
Je m'explique:
Pour chaque ligne d'enregistrement, je met le contenu dans un bloc div ayant pour id, le id de l'enregistrement. Comme ça, lorsque je clique sur l'enregistrement à supprimer, je fais un hide de bloc ayant le même id.
Voilà.
Merci que même.;)
C'est généralement comme ça que je fais. La fonction php de suppression renvoie un code retour (ok ou erreur). Si le retour est ok, alors la ligne du tableau est supprimée en JS (remove() avec JQuery). Sinon, affichage d'une erreur.
mistike a écrit :
C'est généralement comme ça que je fais. La fonction php de suppression renvoie un code retour (ok ou erreur). Si le retour est ok, alors la ligne du tableau est supprimée en JS (remove() avec JQuery). Sinon, affichage d'une erreur.


Oui j'ai mis un slideUp pour le côté animation.

Donc j'étais pas partis dans la bonne direction. Merci à vous de m'avoir remis dans le droit chemin Smiley smile
A bientôt.