Précédent   Forum du club des développeurs et IT Pro > Webmasters - Développement Web > Contribuez
Contribuez Proposez vos articles, cours, tutoriels, questions/réponses pour les FAQ, sources et autres ressources pour la rubrique Web ainsi que ses sous-rubriques.
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse
 
Outils de la discussion
Publicité
'
Vieux 04/05/2011, 10h07   #1
sekaijin
Expert Confirmé Sénior
 
Avatar de sekaijin
 
Homme
Urbaniste
Inscription : juillet 2004
Messages : 2 115
Détails du profil
Informations personnelles :
Sexe : Homme
Âge : 49
Localisation : France, Yvelines (Île de France)

Informations professionnelles :
Activité : Urbaniste
Secteur : Santé

Informations forums :
Inscription : juillet 2004
Messages : 2 115
Points : 5 033
Points : 5 033
Par défaut De PHP à JavaScript : une méthode

Bonjour

Une méthode "universelle" pour passer des variables de php (Java asp ou autre) vers JavaScript

en lisant les posts j'ai vu que cette problématique revenait souvent.
comment passer des variables php à des scripts dans une page html ?

Voici donc une solution.
dans le code PHP créer un tableau associatif contenant toutes les variables à passer. si certaine variable sont des objets seule les valeurs des membres sont intéressant pour JavaScript utiliser donc get_object_vars pour obtenir un tableau de ces valeurs.
Code php :
1
2
3
4
5
$scriptData = Array(
  'resultCode' => 200,
  'message' => "Jusqu'ici tout va bien !",
  'user' => get_object_vars($mySqlQueryResult)
);
placez tous ce que vous voulez avec les niveau d'imbrications de votre choix.
à la génération HTML de votre page (entre les balises <head> de préférence) ajoutez
Code html :
1
2
3
<script type="text/javascript">
  scriptData = <?php echo json_encode($scriptData ); ?>;
</script>
vos variables sont toute disponibles dans vos JavaScript
Code javascript :
1
2
3
4
5
6
7
8
  alert(scriptData.message);
  document.getElementById('btn').onclick = function () {
    if (200 == scriptData.resultCode) {
      alert('user name : ' + scriptData.user.name)
    } else {
      alert('invalid Query !')
    }
  }

A+JYT
sekaijin est déconnecté   Envoyer un message privé Réponse avec citation 60
Vieux 10/11/2011, 12h56   #2
amerex
Membre régulier
 
Avatar de amerex
 
Inscription : septembre 2007
Messages : 235
Détails du profil
Informations personnelles :
Âge : 26
Localisation : Canada

Informations forums :
Inscription : septembre 2007
Messages : 235
Points : 95
Points : 95
Très intéressant!
Pour les petits bouts de code à intégrer, à l'inverse, de JavaScript dans PHP, le problème est les guillemets-simples et les guillemets-doubles...

J'utilise cette technique:

Code :
1
2
3
4
5
6
7
8
 
<?PHP
 
  $Message = '"Hello World!"';
 
  Print "<a href='#' onClick = 'return confirm(".$Message.");'>Test</a>";
 
?>
__________________
Amerex
«La chance sourit aux audacieux»
Ms Access, Ms Excel, Ms FrontPage, Expression Web, Crystal, UniVerse, Basic, SQL, PHP, VBA...

N'oubliez pas de noter les messages!
amerex est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 10/11/2011, 13h50   #3
sekaijin
Expert Confirmé Sénior
 
Avatar de sekaijin
 
Homme
Urbaniste
Inscription : juillet 2004
Messages : 2 115
Détails du profil
Informations personnelles :
Sexe : Homme
Âge : 49
Localisation : France, Yvelines (Île de France)

Informations professionnelles :
Activité : Urbaniste
Secteur : Santé

Informations forums :
Inscription : juillet 2004
Messages : 2 115
Points : 5 033
Points : 5 033
Code php :
1
2
3
$scriptData = Array(
  'message' => "Hello World!"
);

Code html :
1
2
3
4
<script type="text/javascript">
  scriptData = <?php echo json_encode($scriptData ); ?>;
</script>
<a href="#" onClick ="return confirm(scriptData.message);">Test</a>
ainsi il n'y a pas de pb de " ou '
il n'y a plus de mélange de code php avec js
car le json inclus toutes les variables php que l'on veut passer dans l'objet js scriptData
du coup coté html js il suffit d'utiliser l'objet scriptData

mieux du fait que le code js n'est pas généré il peut être dans un fichier js statique lié à la page. du coup le compilateur javascript du navigateur garde la version compilé en cache ce qui évite contrairement au script généré de le recharger et le recompiler.

A+JYT
sekaijin est déconnecté   Envoyer un message privé Réponse avec citation 50
Vieux 23/01/2012, 05h26   #4
Paul TOTH
Expert Confirmé Sénior
 
Avatar de Paul TOTH
 
Homme Paul TOTH
Freelance
Inscription : novembre 2002
Messages : 4 405
Détails du profil
Informations personnelles :
Nom : Homme Paul TOTH
Âge : 43
Localisation : Réunion

Informations professionnelles :
Activité : Freelance
Secteur : High Tech - Éditeur de logiciels

Informations forums :
Inscription : novembre 2002
Messages : 4 405
Points : 10 758
Points : 10 758
je viens de lire l'article du magazine sur le JS embarqué...je suis partiellement d'accord avec ces affirmations.

Toutes les fonctions génériques (et il est préférable de généraliser ses fonctions) ont leur place dans des fichiers .JS, pas uniquement pour des questions de caches, mais aussi pour éviter de toujours reproduire le même code.

Par contre je doute qu'ajouter une 10ène de ligne JS dynamiques dans une page web ai une quelconque influence sur les performances du navigateur.

J'irais même jusqu'à dire que produire du JS dynamique en réponse à une requête AJAX pourra rendre la page bien plus efficace que de recharger son code HTML

Quand au cache, il est souvent pénible en cours de développement car justement la mise à jour des fichiers JS passe parfois inaperçue et le navigateur continue d'exploiter l'ancien code.

Par contre, je trouve le passage de variable via json assez élégant en effet.
__________________
Developpez.com: Mes articles, forum FlashPascal
Entreprise: Execute SARL
Produits : UPnP, RemoteOffice, FlashPascal
Embarcadero : Ile de la Réunion, Dephi, C++Builder, RADPHP...TVA à 8,5%
Paul TOTH est actuellement connecté   Envoyer un message privé Réponse avec citation 00
Vieux 23/01/2012, 14h07   #5
mr_samurai
Membre Expert
 
Avatar de mr_samurai
 
Inscription : décembre 2007
Messages : 958
Détails du profil
Informations personnelles :
Âge : 29
Localisation : France

Informations forums :
Inscription : décembre 2007
Messages : 958
Points : 1 030
Points : 1 030
J'utilise cette technique intuitivement depuis un moment .

L'interet principale est de localiser les échanges de données entre PHP et JS au niveau d'un seul objet. Ainsi, la maintenance du code se trouve simplifiée.

Sur mes projet j'ai toujours quelquechose du genre:

Code :
1
2
3
4
$appDebug = true;
....
 
$jsData = { 'debug' => $appDebug,... };
++
__________________
Matlab 2008b / Vista
| FileExchange | Matlab: FAQ, Tutoriels |
geny course, pronostic pmu
mr_samurai est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 30/06/2012, 14h39   #6
sekaijin
Expert Confirmé Sénior
 
Avatar de sekaijin
 
Homme
Urbaniste
Inscription : juillet 2004
Messages : 2 115
Détails du profil
Informations personnelles :
Sexe : Homme
Âge : 49
Localisation : France, Yvelines (Île de France)

Informations professionnelles :
Activité : Urbaniste
Secteur : Santé

Informations forums :
Inscription : juillet 2004
Messages : 2 115
Points : 5 033
Points : 5 033
Citation:
Envoyé par Paul TOTH Voir le message
je viens de lire l'article du magazine sur le JS embarqué...je suis partiellement d'accord avec ces affirmations.

Toutes les fonctions génériques (et il est préférable de généraliser ses fonctions) ont leur place dans des fichiers .JS, pas uniquement pour des questions de caches, mais aussi pour éviter de toujours reproduire le même code.

Par contre je doute qu'ajouter une 10ène de ligne JS dynamiques dans une page web ai une quelconque influence sur les performances du navigateur.

J'irais même jusqu'à dire que produire du JS dynamique en réponse à une requête AJAX pourra rendre la page bien plus efficace que de recharger son code HTML

Quand au cache, il est souvent pénible en cours de développement car justement la mise à jour des fichiers JS passe parfois inaperçue et le navigateur continue d'exploiter l'ancien code.

Par contre, je trouve le passage de variable via json assez élégant en effet.
je suis d'accord pour dire qu'une 10ene de lignes ne changent rien. mais cela n'apporte rien non plus.
si tu charge dans ta page un fichier js qui contient tes fonctions
lorsque tu fait ton appel ajax rien ne t'empêche de les exécuter. le serveur n'a alors pas besoin de produire dynamiquement des fonctions js en php il retourne simplement que des données en JSON


j'en profite pour rappeler que JSON ne supporte pas le transport de variables ni de fonctions
Il n'accepte que des structures et des valeurs.
http://json.org/


A+JYT
sekaijin est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse
Outils de la discussion

Navigation rapide


Fuseau horaire GMT +2. Il est actuellement 08h26.


 
 
 
 
Partenaires

Hébergement Web