Salut a tous!
Depuis quelques temps maintenant apres un tuto de Grafikart sur le modele MVC, je m'y suis mis.
Mais comme je l'avais presenti, j'ai du mal a recuperer les retour de mes class quand elles sont isolees...
Je m'explique, je veux afficher l'heure en temps reel, alorsj'ai cree un fichier getLiveTime.php que j'ai ensuite inclus dans mon appli. Pas de probleme, il marche... petit apercu

<?=ucfirst(Model::getTime('H')) . ':' . Model::getTime('i');?>

Puis vla ma class Model

Class Model {
    ...
    static function getTime($format=null)
    {
        $format = ($format == null) ? $format = 'H:i' : $format;
        $dateTime = new DateTime();
        return $dateTime->format($format);
    }
    ...

Maintenant pour le temps reel, j'utilise $.AJAX...

$.ajax({
    url : 'getLiveTime.php',
    success: function(response){
        console.log(response)
    }
})

le soucis? MVC requiert des fichiers externes pour fonctionner. Notemment pour instancier le controller puis executer la methode et autre...
Vous me sauvez! Merci!

12 réponses


Grimille
Réponse acceptée

Eh bien tu fais une page du genre http://www.monsite.com/ajax/getBlock/{id}, ce qui te renvoie une réponse en ajax selon l'ID du block à mettre à jour. C'est aussi simple. Après, c'est une façon de faire, il y en a d'autres ;)

Salut,

Il y a juste à appeler l'url de ta page ? Que ça soit avec ou sans ajax, ta page doit être accessible, et donc doit instancier ton MVC quoi qu'il arrive. Ou alors, je n'ai pas bien saisi le problème :)

Sinon, un truc que je trouve bizarre, c'est pourquoi récupérer l'heure en temps réelle via ajax et php ? Du simple javascript suffit :)

"Sinon, un truc que je trouve bizarre, c'est pourquoi récupérer l'heure en temps réelle via ajax et php ? Du simple javascript suffit :)" tu me croiras pas mais quand jai lu xa, j'ai souris net! car hauuut combien de fois tu avais raison! daccord, dans ce cas je complique un tout petit peu... En fait, avec une petite equipe, on projete mettre en place un mini-reseau-social...
Question: On s'y prend comment pour actualiter les bloc de nos pages...

Vous me sauvez! Merci!

Une simple requête ajax vers des pages PhP qui récupèrent les données te permettront de mettre à jour tes blocs.

var url = "http://monsupersite.com";        //L'URL qui récupère les données pour la mise à jour du block
var monblock = $('.monblockaupdate');   // Le block à mettre à jour

$.get(url, function(data)                               //data: les données reçues par la page qui met à jour
        {
            monblock.empty().html(data);        //Affichage des données :)
        });

Sinon, tu peux toujours utiliser la syntaxe en .ajax, c'était juste un alias

var monblock = $('.monblockaupdate');

$.ajax({
    url: 'http://monsupersite.com',
    type: 'GET'
    success: function(html){
        monblock.empty().html(html);
    });

Pour le reste, la doc est bien fichue http://api.jquery.com/jquery.ajax/ :)

Salut Grimille merci d'mavoir apporté ta précieuse aide. Mais y'a un bemol, dans ton tuyo t'appel l'url de base, ce qui signifierait que c'est mon $('.monblockaupdate') qui serait censé contenir tout le contenu html, ce qui ne cadre pas trop avec mon objectif...
Petite histoire rapide, j'ai déjà travaillé sur une app avec messagerie instantanée.. l'app fonctionnait tan bien que mal MAIS ELLE N'A PAS ETE DEVELOPPE AVEC LE M V C... j'sais pas trop peut etre un truc de ce genre...

var monblock = $('.monblockaupdate');
$.ajax({
    url: 'http://monsupersite.com/monblockaupdate.php',
    type: 'GET'
    success: function(html){
        monblock.empty().html(html);
    });

dans ce exemple au moins c'est explicite, seulmen ce contenu requis sera appelé... j'en sais trop rien...
Vous me sauvez! Merci!

Je ne suis pas sûr d'avoir compris. Mais s'il faut mettre à jours plusieurs divs, il suffit de faire une requête ajax de l'élément parent et de recréer le contenu. Autrement, pour utiliser ajax avec un MVC, il suffit juste de ne pas mettre de layout, sinon, tu vas récupérer une page web avec un nouveau doctype.

oook ca devient de plus en plus sombre la... Mais dis-moi stp, a supposer que comme presenté dans mon img ci-dessus, chaque bloc etait module.. pour actualiser le module E je ferais du ajax avec comme url : 'e.php' ? ou pour le bloc H url : 'h.php' ?
Vous me sauvez! Merci!

Oui, une une page générique avec un identifiant qui représente le block à mettre à jour? Enfin après chacun sa méthode :)

Cool mais... qu'elle méthode me conseillerais-tu vraiment, histoire que je m'en aperçoive pas un peu trop tard... :)
Tu me sauves! Merci!

Au lieu de faire une url par block, on fait une page ou l'on envoie l'identifiant du block qui se charge de retourner le resultat de la requête

Daccord et... tu pourais s'il te plait me balancer un petit exemple d'url ? Histoire que j'sois vraiment situé et que j'comprenne rellement ce procédé.

Cool en plus de toutes tes précieuses infos, jcrois que jvais browser le web histoire de me ressourcer davantage sur la question avant de m'embarquer la dedans... Merci @Grimille !