Alexandre Carette Posted September 10, 2015 Share Posted September 10, 2015 Bonjour, Je galère pour faire passer une variable smarty dans un script jquery: Je veux récupérer la valeur qu'il y a dans <p class="test">{$content.id_msg}</p>Cette variable est definit correctement dans le html et le foreach. Dans le script je fais var idmsg = $(".test").val(); qui permet de recup ce qu'il y a a l'inteieur de la class test. Mais malheureusement ça ne marche pas. dans var dataString = '&idmsg' + idmsg; si je fais var dataString = '&idmsg280' + idmsg; 280 étant le contenu de la variable smarty, mon script marche et le formulaire est bien passé. Merci à ceux qui auront la gentillesse de m'aider. Le js: jQuery(function(){ jQuery('.showSingle').click(function(){ var idmsg = $(".test").val(); var dataString = '&idmsg' + idmsg; jQuery( '#div'+$(this).attr('target')).slideToggle("slow"); $.ajax( { type: "POST", url: "chat/chat-update.php", data: dataString, success : function() { $("#message").html("<p>Message bien envoyé</p>"); }, error: function() { $("#message").html("<p>Erreur d'appel, le message ne peut pas fonctionner</p>"); } } ); }); }); Le tpl: {foreach from=$getinternalmessages key=k item=content name=content} <form id="formcom2" action="#" method="POST"> <div id="message"></div><br /> <input type="hidden" name="idmsg" id="idmsg" value="{$content.id_msg}" /> <p class="test">{$content.id_msg}</p> <button type="submit" name="boutonmsg" class="button btn btn-default button-small"><span>marquer comme lu<i class="icon-chevron-right right"></i></span></button> </div> </form> {/foreach} Link to comment Share on other sites More sharing options...
coeos.pro Posted September 10, 2015 Share Posted September 10, 2015 rhooo, l'erreur de débutant var idmsg = $(".test").val(); .test signifie que tu as class="test" et récupérer la valeur d'une classe (il peut y en avoir plusieurs dans la page) est différent de récupérer la valeur d'un id (unique dans la page) met plutot : var idmsg = $("#idmsg").val(); Link to comment Share on other sites More sharing options...
coopergarry Posted September 10, 2015 Share Posted September 10, 2015 var idmsg = $(".test").text(); Mais si tu utilises un foreach, il y en aura plusieurs, tu devras utiliser des ids.Sinon je te conseille de regarder du coté de addJsDef qui est utilisé dans le thème pour déclarer des variables js. Link to comment Share on other sites More sharing options...
coeos.pro Posted September 10, 2015 Share Posted September 10, 2015 par contre dans un foreach tu ne doit pas mettre id="..." ou alors il faut il mettre une variable sinon tu va avoir X fois le même id Link to comment Share on other sites More sharing options...
Alexandre Carette Posted September 10, 2015 Author Share Posted September 10, 2015 Merci pour vos reponses, toute la difficulté reside dans le fait que je suis dans un foreach. en fait je pense pas que ce soit possible d utiliser ajax dans ce cas. Le script marche pour la derniere valeur du tableau Link to comment Share on other sites More sharing options...
Alexandre Carette Posted September 10, 2015 Author Share Posted September 10, 2015 Après une bonne journée de galère, j'ai réussi a faire ce que je voulais ! 1) Utilisation de la balise {literal} {/literal} 2) recuperation de la variable avec data var idmsg = jQuery(this).attr('data-idmsg'); {literal} <script type="text/javascript"> jQuery(document).ready(function() { jQuery(".msg_uniq").click(function() { var idmsg = jQuery(this).attr('data-idmsg'); var dataString = '&idmsg=' + idmsg; jQuery.ajax({ url: "chat/chat-update.php", type: "post", data: dataString, success: function(html) { }, error: function() { } }); }); }); </script> {/literal} coté tpl: {foreach from=$getinternalmessages key=k item=content name=content} <div class="msg_uniq"> <div class="row msg_uniq" data-idmsg="{$content.id_msg}">marquer comme lu </div> </div> {/foreach} Ce tuto m'a donné la réponse: http://www.copier-coller.com/systeme-de-messagerie-en-php-sous-wordpress/ c'est au sujet d'une messagerie interne pour wordpress. Link to comment Share on other sites More sharing options...
Recommended Posts
Create an account or sign in to comment
You need to be a member in order to leave a comment
Create an account
Sign up for a new account in our community. It's easy!
Register a new accountSign in
Already have an account? Sign in here.
Sign In Now