2013-08-21 6 views
-2

J'ai une fonction php qui me donne simplement la valeur d'un tableau donné la clé.Passer javascript var à php

Exemple:

<?=__('mykey')?> 

Renvoie la valeur de mon tableau.

Je voudrais appeler cette fonction après un appel ajax jQuery, avec un param. Le POST donne-moi un tableau de JSON, et je dois utiliser le fonct précédent comme celui-ci

$.ajax({ 
    url: myfile.php', 
    type: 'POST', 
    data: $('#contact_form').serialize(), 
    dataType: 'json', 
}).done(function(data) { 
    str = ''; 
    $.each(data, function(index) { 
     $('#message').html(" <?=__('"+index+"')?> "); 
    }); 
}) 

Le problème est que la valeur de l'indice dans la fonction .each $ ne sont pas transmises à php ... il y a un façon de le résoudre ou je dois faire quelque chose comme ça?

$.each(data, function(index) { 
    switch(index):{ 
     case 1: $('#message').html(" <?=__('1')?> "); break; 
     case 2: $('#message').html(" <?=__('2')?> "); break; 
     case 3: $('#message').html(" <?=__('3')?> "); break; 
      ... 
    } 

}); 
+2

Je suis assez certain que la réponse peut être trouvé ici: http://stackoverflow.com/questions/1917576/how-to-pass-javascript-variables-to-php –

+0

p.s. les balises courtes sont un no-no ci-dessus, sauvez-vous du refactoring lorsque vous mettez à jour les versions de PHP à l'avenir et utilisez les balises complètes. – xXPhenom22Xx

Répondre

1

J'ai dû faire quelque chose de similaire et j'ai réellement utilisé jQuery pour définir la valeur sur une entrée cachée pour que je la récupère plus tard.

$('#some-hidden-input').val(yourvalue) 

Assurez-vous que ce champ caché existe et est dans le simple HTML

Ensuite, le PHP peut saisir rendu cette valeur d'entrée sur POST.

$myVar = $_POST['some-hidden-input']; 
+1

Vous pouvez également utiliser $ .data(), qui est destiné à ce genre de chose. '$ ('# message'). data ('nom', valeur)'. Et vous le récupérez: '$ ('# message'). Data ('nom')' – Ringo

1

Pour passer des variables PHP via Javascript, la seule façon raisonnable est d'utiliser AJAX, mais vous le faites que lorsque vous postez quelque chose. Sinon, le meilleur moyen est d'avoir un champ hidden input.

En fonction des différentes conditions que vous définissez, vous pouvez définir le champ de saisie masqué pour porter le value auquel vous souhaitez l'appliquer.

Pour attribuer la valeur à <input name="A" id="B">

$("Input[name='A']").val(data);

ou

$('#B').val(data);

Tous deux affecter la valeur des données sur le champ d'entrée