Организационный код, который включает файлы php и javascript - PullRequest
0 голосов
/ 02 октября 2009

У меня есть веб-сайт, где я включаю файл библиотеки php и файл библиотеки 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); ?>');
}

В результате, когда страница загружается, я получаю два окна сообщений. Первый говорит "Hello World", а второй говорит "<? Php echo (CONST_TEXT);?>". Первый метод javascript делает то, что я хочу, но я буду использовать эту функцию во многих местах по всему сайту, поэтому в идеале мне не нужно каждый раз передавать константу в качестве параметра.

Есть ли хороший способ изменить код, чтобы заставить работать второй метод javascript?

Ответы [ 2 ]

4 голосов
/ 02 октября 2009

Простой ответ - переименовать "lib.js" в "lib.php".

Вы также должны добавить

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

в начало файла.

Кстати, вы должны json_encode() вывести текст в javascript:

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

И «javascript:» не относится к атрибутам событий (которые в любом случае устарели):

<body onload="doSomething();">
2 голосов
/ 02 октября 2009

Тело метода внутри alert() не интерпретируется PHP (оно интерпретируется Javascript), поэтому вы не можете поместить в него тег PHP

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...