Insertion de php dans le fichier js

J'ai un gif de chargement pour la galerie sur mon site. Dans mon fichier js, j'ai ce code pour afficher le chargeur:

image: $("<img src='images/loading.gif'/>"), 

Actuellement, l'image n'apparaît pas parce que je n'ai pas mis le chemin d'image complet. Mais au lieu de mettre le chemin d'image complet, je préférerais le faire:

 <img src="<?php bloginfo('url');?>/images/loading.gif”> 

Mais je ne peux pas comprendre comment faire fonctionner ce php dans mon fichier js. Comment puis-je faire cela de la manière la plus simple?

Je préfère..

1) Dans mon include d'en-tête (le php inclut qui contient des données <head>), écrivez une petite fonction JS en ligne qui crée un objet global contenant toutes les variables dont j'ai besoin à partir du serveur (PHP). Je peux utiliser les fonctions 'echo' et 'json_encode' ici parce que c'est dans un extrait JS en ligne dans un fichier php.

2) Vous pouvez écrire une fonction JS dans votre fichier JS qui utilise AJAX pour appeler un fichier PHP, qui renverra les mêmes données codées JSON que le numéro 1, puis vous l'analysez et assignez-le à une variable globale.

Les deux font essentiellement la même chose, sauf avec 2, vous utilisez AJAX, qui ajoutera une demande supplémentaire. Je préfère l'option 1, car elle se fait avec l'exécution des pages. L'option 2 peut vous obliger à attendre que le DOM soit prêt, selon les différents aspects de votre programme (dans lequel je ne peux pas le dire).

L'option 1 requiert JS en ligne, mais vous ne devriez vraiment pas faire appel à cela, car, avec les sites Web dynamiques, il peut être un plus, aussi long que court et concis. Certaines personnes se portent sur d'autres JS en ligne. Ne les laissez pas vous crier.

Je ne suis pas totalement sûr de ce que vous essayez de faire. Mais si JS ne fonctionne pas, pourquoi ne pas inclure un fichier php, ou simplement écrire un peu de php dans l'en-tête, qui inclut le JS à l'intérieur de 'echo ()'. C'est à dire:

  echo('?><img src="<?php bloginfo('url');?>/images/loading.gif" /><?php'); 

Corrigez-moi si je ne comprends pas votre intention.

Vous ne pouvez pas placer le code PHP directement dans un fichier .js, mais vous pourriez avoir un javascript dans l'élément principal de votre fichier PHP avant d'inclure le fichier javascript.

Dans ce javascript, vous pouvez définir des variables et leur affecter des données à l'aide de PHP. Ces variables seraient alors accessibles à partir du fichier javascript.

 <head> <script type='text/javascript'> var _g_bloginfo = "<?php echo '...'; ?>"; </script> <script type='text/javascript' src='javascript.js'></script> </head> 

Une technique plus propre pour transmettre des données PHP à JavaScript est de stocker les données dans les attributs de données auxquels vous pouvez accéder via JavaScript. Comme un exemple simple:

 <body data-home-url="<?php echo home_url(); ?>"> 

Vous pouvez accéder à cela dans jQuery comme:

 var home = $('body').attr('data-home-url'); 

FYI, vous pouvez utiliser json_encode pour convertir des objet / arrays PHP en objets JSON que vous pouvez lire via $ .parseJSON ou JSON.parse . Le wp_localize_script de WP peut effectivement le faire pour vous, mais notez que dans ce cas, il exposera les données converties à la fenêtre .

Vous pouvez créer un fichier php à la place (de votre fichier js avec tout le code que vous avez déjà dans ce fichier js + références à vos variables / fonctions php) et incluez cela dans votre fichier php principal.

Exemple html:

 <?php $example = 23; ?> <html> <head><title></title> <script type="text/javascript"> <?php include('js.php'); ?> </script> </head> <body></body> </html> 

Js.php:

 var a = <?= $example ?>; alert(a); 

Finira par produire:


 <html> <head><title></title> <script type="text/javascript"> var a = 23; alert(a); </script> </head> <body></body> </html>