2009-10-02 19 views
0

J'ai un site Web où j'inclus un fichier de bibliothèque php et un fichier de bibliothèque javascript. J'ai résumé le problème des fichiers suivants:Code d'organisation incluant les fichiers php et javascript

index.php

<?php 
    include('constants.php'); 
?> 
<html> 
    <head> 
    <script type="text/javascript" src="lib.js"></script> 
    </head> 
    <body onload="javascript:show_const_1('<?php echo(CONST_TEXT); ?>'); 
          show_const_2();"> 
    Some text here 
    </body> 
</html> 

constants.php

<?php 
    define('CONST_TEXT', 'Hello World'); 
?> 

lib.js

function show_const_1(string) 
{ 
    alert(string); 
} 

function show_const_2() 
{ 
    alert('<?php echo(CONST_TEXT); ?>'); 
} 

Le résultat est que lorsque la page se charge, je reçois deux boîtes de message. Le premier dit "Hello World" et le second dit "<? Php echo (CONST_TEXT);?>". La première méthode javascript fait ce que je veux, mais je vais utiliser la fonction dans de nombreux endroits sur le site et, idéalement, je ne veux pas avoir à passer la constante en tant que paramètre à chaque fois.

Existe-t-il un bon moyen de réorganiser le code pour faire fonctionner la deuxième méthode javascript?

Répondre

4

La réponse est simple: renommer « lib.js » à « lib.php ".

Vous devez également ajouter

header('Content-type: text/javascript'); 

au début du fichier.

Soit dit en passant, vous devriez nous json_encode() au texte de sortie javascript:

alert(<?php echo json_encode(CONST_TEXT); ?>); 

Et "javascript:" ne fait pas partie des attributs d'événement (qui sont kindof pas à jour de toute façon):

<body onload="doSomething();"> 
+0

Le type MIME de JavaScript est maintenant * application/javascript *. – Gumbo

+0

Beaucoup de commentaires utiles - merci. Php est maintenant en cours d'exécution dans lib.php, mais la constante CONST_TEXT ne semble pas être définie dans lib.php. Le php renvoie la chaîne "CONST_TEXT" (par opposition à "Hello World"). – tttppp

+0

Vous devez probablement inclure() quel que soit le fichier que vous définissez CONST_TEXT dans – Greg

2

Le corps de la méthode à l'intérieur alert() ne soit pas interprété par PHP (il est interprété par Javascript), de sorte que vous ne pouvez pas mettre balise PHP dans ce

+0

Le fonctionne correctement dans un fichier php: alert (''); – tttppp

Questions connexes