"Controller" JavaScript

xactise Messages postés 507 Date d'inscription mardi 18 février 2003 Statut Membre Dernière intervention 22 juin 2012 - 4 mars 2012 à 11:08
pmcoste Messages postés 72 Date d'inscription mercredi 7 février 2007 Statut Membre Dernière intervention 25 juillet 2013 - 7 mars 2012 à 16:24
Bonjour à tous

je cherche quelque chose de bien précis mais je n'arrive pas a mettre des mots concret dessus pour trouver des résultat intéréssant

je vais essayer d'expliquer si vous pouvez m'aider sa serait cool :)


je travaille dans un modèle MVC et j'execute des requete ajax pour généré des vue j'ai donc en retour de ma requette ajax (success) du cote html généré !

personnelement je l'ai organiser de telle sorte a recevoir un tableau multidimentionnel JSON qui me peret de generer plusieur vue (exemple ['#vue1'] => '
ma vue 1 généré
, ['#vue2'] => '
ma vue 2 généré
')

ensuite je dispatche ces vue avec jquery dans moin success ajax avec des replaceWith

voila en gros je cherche quelque chose de ce genre en javascript qui permettrait d'inséré des vue généré depuis uen requete ajax.

Exemple la je ne peut faire que du replaceWith d'un selecteur.
je pourrait eventuellement rajouter la methode jquery a utiliser dans une dimention supplémentaire de mon tableau
exemple : ['#mon-selecteur']['prependTo'] = 'ma vue généré';

je voudrais savoir si quelque chose existe dans ce sens

mercia

exemple je reçoit

L0rD...

6 réponses

dvwyns Messages postés 159 Date d'inscription mardi 2 janvier 2007 Statut Membre Dernière intervention 7 mai 2012
5 mars 2012 à 15:09
Salut,

Coté script php, utilise
echo json_encode($var);

pour l'encoder au format JSON utilisable en js

Dans ta fonction ajax de réponse, utilise
var data = eval( '(' + _xmlHttp.responseText + ')' );
pour récuperer ton tableau

Enjoy
0
xactise Messages postés 507 Date d'inscription mardi 18 février 2003 Statut Membre Dernière intervention 22 juin 2012 2
6 mars 2012 à 08:34
c'est quasi ce que j'ai déjà

voici ce que je reçoit :

module/ajax.php

$Module = new Module();
if($_REQUEST['mon_action'])
{
     $params = array(); // eventuellement paramètre (id, etc..)
     $Module->monAction($params);
}
die(json_encode($MonModule->feedback));


avec mondule/module.php

function monAction($params)
{
    global $smarty;

    $smarty->assign($params);

    $this->feedback['output']['#selecteur'] = $smarty->display('ma_vue');
}



donc en gros je die en json un tableau PHP de ce type

array(
[output] => array(
['#selecteur'] => '
ma vue HTML généré
',
['#selecteur2'] => '
eventuellement une autre vue
';
)
)

et ensuite dans mon callback success de ma requete ajax j'ai une fonction de ce type

function ajaxSuccess(feedback)
{
var output = feedback.output;

for(i in output)
{
        $(""+i+"").replaceWith(output[i]);
}
}


voila je veux rester dans ce même contexte mais avec quelque chose de plus développer.

par exemple ici ont voit bien que je ne peux faire dans le retour JS que du replaceWith.

je pourrait eventuellement rajouter une dimension a mon tableau afin d'y ajouter la methode d'insertion jQuery en plus du selection : (exemple : ['#selecteur']['methode'] => '
ma vue généré
')

donc je voulais savoir si ce genre de chose exister deja car je n'arrive pas a mettre de nom dessus pour trouver des chose intéréssante sur le web.

D'avance merci pour la réponse

L0rD...
0
xactise Messages postés 507 Date d'inscription mardi 18 février 2003 Statut Membre Dernière intervention 22 juin 2012 2
7 mars 2012 à 13:48
up (dsl ^^)

L0rD...
0
dvwyns Messages postés 159 Date d'inscription mardi 2 janvier 2007 Statut Membre Dernière intervention 7 mai 2012
7 mars 2012 à 14:39
Salut,

Si j'ai bien compris, tu peux essayer de mettre dans ta vue (ton string en gros) un élément en plus.
Par exemple,
$this->feedback['output']['#selecteur'] = $smarty->display('methodeJqueryQueTuVeuxUtiliser@
 ma vue généré
');

Puis tu le split('@') dans ton js pour récup un tableau avec ta méthode et ta vue
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
xactise Messages postés 507 Date d'inscription mardi 18 février 2003 Statut Membre Dernière intervention 22 juin 2012 2
7 mars 2012 à 14:46
Merci pour ta réponse

cependant je croi qu'on ne se comprend pas je chercher pas une solution différente pour faire quelque chose que je sais déjà faire

oui je pourrait rajouter ma methode jQuery au debut du string que je retourne, tout comme je pourrait le faire comme je l'ai dit dans mon post précédant en rajoutant une dimention a mon tableau PHP.

ce n'est pas ce que je cherche a faire puisque je le fait déjà

ce que je chercher c'est de savoir si un "dispatcher" javascript existe afin d'avoir beaucoup plus de méthode/propriété implémenté autre que la methode de remplacement (innerHTML, prepend, append)

par exemple il serait eventuellement interessant d'avoir un callback une fois les vue injecter, je vais pas rajouter une dimention a mon tableau PHP de retour, ou un split de plus avec un # pour connaitre une autre propriété ou methode.





L0rD...
0
pmcoste Messages postés 72 Date d'inscription mercredi 7 février 2007 Statut Membre Dernière intervention 25 juillet 2013 1
7 mars 2012 à 16:24
Bonjour,

Pourquoi ne pas passer une fonction à ajaxSuccess ?

function testMe(sString)
{
alert(sString);
}

function ajaxSuccess(feedback, callback)
{
var output = feedback.output;

for(i in output)
{
        $(""+i+"").replaceWith(output[i]);
                if(callback)
                   callback(output[i]);

}
}

//et quand tu appelles ajaxSuccess
ajaxSuccess(xhr, testMe);



---------------------
Oderint dum metuant
0
Rejoignez-nous