2009-06-04 4 views
0

Est-ce une mauvaise pratique d'utiliser des instructions php telles que 'if' dans une fonction jquery?Instructions php dans jquery

est-ce que je devrais écrire juste plus de fonctions de charges au lieu d'en limiter quelques-uns using php? il semble bien fonctionner mais se demandait si c'est un faux pax majeur?

exemple:

c'est un extrait de code, essentiellement si la variable php $ url est égal à « projets », puis le code va revenir avec des lignes supplémentaires, sinon ceux-ci seront cachés à partir d'autres pages. Est-ce que ça a du sens?

timer = setTimeout(function() { 
       $('li#contact').removeClass('cur'); 
       $('li#$url').addClass('cur'); 
       "; if($url=='projects') { echo" 
       $('ul.projects').fadeIn('slow'); 
       $('ul.image_display').css('display', 'block');"; } 
       echo" 
        }, 8625); 
+1

Pourriez-vous donner un exemple? Puisque PHP s'exécute sur le serveur et jQuery s'exécute dans le navigateur, que voulez-vous dire "utiliser PHP dans jquery"? – Piskvor

+0

Avez-mis à jour avec un exemple ci-dessus – DanC

Répondre

1

Pas mal pratique parfois la valeur d'une variable PHP va changer ce que vous voulez que le code pour le faire.

Vous devrez cependant utiliser pour ouvrir et fermer votre code PHP.

+0

Donc, fondamentalement, le php peut effectuer la mise en cache, mais pas la performance du code et donc pas vraiment mauvaise pratique ?? signifie que je ne dois pas aller réécrire tout au moins !! :) – DanC

+0

Fondamentalement, vous ne voulez pas mettre en cache quelque chose qui change. Je suppose qu'en théorie, vous pourriez faire un PHP sinon et avoir les deux versions du javascript dans des fichiers .js séparés - mais la vérité soit dite pour un site qui n'est probablement pas si énorme et un extrait de code qui est si petit que je wouldn 't. –

0

Je ne pense pas que ce soit une mauvaise pratique. J'utilise les littéraux ASP.NET pour écrire jQuery dynamique en fonction des données qui reviennent de la base de données. Je ne le fais pas beaucoup mais il y a des moments où c'est nécessaire.

1

cela dépend. Si vous écrivez juste quelques données d'utilisateur pour le javascript à consommer (par exemple un nom d'utilisateur ou un nom), que non. Mais si vous utilisez beaucoup PHP pour les structures de contrôle, il y a probablement une meilleure façon de le faire. L'un des gros inconvénients de votre approche (à part le fait que le code soit un peu moche) empêcherait le js d'être bien mis en cache. En créant dynamiquement les fichiers js et non dans un fichier js compressé séparé, vous perdez la possibilité de le mettre en cache et de nuire à votre bande passante.

1

ne devriez-vous pas mettre votre code php entre les balises php alors? Sinon, il apparaîtra dans le code source au lieu d'être traité sur le serveur.

timer = setTimeout(function() { 
        $('li#contact').removeClass('cur'); 
        $('li#$url').addClass('cur'); 
        "; <?php if($url=='projects') { echo" 
        $('ul.projects').fadeIn('slow'); 
        $('ul.image_display').css('display', 'block');"; } 
        echo" 
          } ?>, 8625); 

hors sujet: une meilleure mise en forme serait bien trop :)

+0

c'était juste un extrait, les étiquettes sont ailleurs! – DanC

3

C'est une mauvaise pratique en termes de lisibilité du code et de maintenabilité, à mon avis. Ne serait-ce que parce que deux langages sont imbriqués les uns dans les autres, ce qui signifie que vous ne pouvez pas le comprendre sans analyser deux langages, ce qui provoque un «défaut de page» mental entre le langage JS et l'analyse PHP.

Il est assez facile d'avoir la branche javascript en fonction des éléments de la page présents, et c'est une solution préférée à mon avis. Il est préférable de fournir un certain javascript sous certaines conditions (même si je pense que fournir un javascript différent peut sembler logique quand vous avez une quantité écrasante de js) et c'est aussi mieux que de faire des branchements en fonction de l'URL.

Si vous devez vraiment branche que vous JS fournir en fonction de PHP, je veux les voir au moins sur des lignes séparées ... quelque chose comme:

<?php if($stmt): ?> 
$(javascript).code.goes.here 
<?php else: ?> 
$(alernative.javascript).code.goes.here 
<?php endif; ?> 

que ce serait plus agréable que d'avoir à lire et comprendre deux langues dans une seule ligne/instruction.

1

Je tente de garder le plus possible le code le plus éloigné possible (HTML/CSS/PHP/JS), car je n'aime pas les gros morceaux de code JS dans mon code HTML ou PHP. Ce que je fais habituellement avec les variables est de les placer quelque part dans le HTML, par exemple. <div id="url">value</div>, puis récupérez-le à l'aide de jQuery.En fonction des variables, j'ai parfois quelques-uns de ces div cachés quelque part sur la page en utilisant display:none. De cette façon, je peux toujours utiliser le même code JS pour plusieurs applications, en fonction des valeurs récupérées. Je dois dire cependant que je n'ai aucune idée si cela est considéré comme correct, ou que cette installation/méthode est (également) pas fait.