2009-09-09 13 views
0

Quelqu'un a-t-il des modèles propres pour placer les variables php dans la portée js?Portée PHP -> Modèle de portée Javascript?

Deux façons que j'ai fait auparavant est de l'injecter avec un appel réel du modèle de base à l'intérieur d'un wrapper prêt pour le document.

(jQuery/templates Smarty)

{literal} 
$(document).ready(function() { 
    TargetClass.targetVar = {/literal}{$phpVar}{literal}; 
}); 
{/literal} 

également à la mise en une étiquette et en tirant que du DOM une fois que la JS exécute.

HTML

<link id="phpVar" value="{$phpVar}" /> 

JS

var phpVar = $('#phpVar').attr('value'); 

.

L'un d'entre vous a-t-il trouvé une meilleure méthode?

Répondre

3

Vous pouvez générer du JSON très facilement à partir de php. C'est un bon moyen d'obtenir un tableau entier (ou même un arbre de tableaux imbriqués) de données en javascript en une seule fois.

Vous pouvez le mettre dans un en-tête <script>, ou l'extraire async avec ajax.

Voici le php docs:

http://us3.php.net/manual/en/ref.json.php

si vous mettez le JSON directement dans le code, il est déjà au format javascript. Si vous le récupérez à partir d'une requête ajax, ce sera une grosse chaîne, et vous pouvez l'analyser en la passant simplement à eval()

+0

Hmm ouais, intéressant. Je n'ai jamais vraiment besoin de pousser autant de données dans la portée de JS, donc je n'ai jamais pensé à utiliser JSON dans le template. En fait une bonne idée. Nettoyeur. Merci. – Spot

+0

oh, aussi vous pouvez vous débarrasser de ce document.ready stuff, et juste définir un js global. Vous avez la valeur avant que le js soit même analysé, ainsi vous n'avez pas besoin d'attendre quoi que ce soit avant de pouvoir le définir. Simplement: var fromphp = $ js_val (où $ js_val est développé par PHP) – JasonWoof

+0

Ouais, bon point. Merci. – Spot