|
|
|
| Подскажите если кто знает.
Есть файл, допустим index.php
в нем определяется переменная id=$_GET['id'], необходимо чтобы эта переменная участвовала в функции написанной на JavaScript, то есть если я пишу это в одном файле (index.php)
<?
$buf_id = $_GET['id'];
?>
<script language="JavaScript">
function closeDoc() {
id = <?print"$buf_id";?>;
alert(id);
}
</script>
|
этот код работает, но если написать
$buf_id = $_GET['id'];
?>
<script language="JavaScript" src="/scripts/savedocument.js"> </script>
|
то пишется что синтаксическая ошибка, вопрос вот в чем, можно ли как нибудь передать переменную php (только про ajax не надо говорить, это уже есть и работает, но хочу переделать без него) в файл JS? | |
|
|
|
|
|
|
|
для: Poul
(12.11.2007 в 09:13)
| | Ваш первый код и передает перменную в JS. | |
|
|
|
|
|
|
|
для: sim5
(12.11.2007 в 09:15)
| | то что первый передает я понимаю, но тогда надо код JS писать в этом же файле. а мне надо в отдельном. и погрузить его так как я описал во втором примере... в файле savedocument находится точно такая же функция как и в первом примере, я понимаю что можно не искать проблемы на одно место и вписать скрипт в файл *.php, но есть проблема. функций на JS на этот документ получается около 20, и половина из них еще и с использованием AJAX, то есть если я все это внесу в один файл. то он получится ну очень трудно разбираем впоследствии | |
|
|
|
|
|
|
|
для: sim5
(12.11.2007 в 09:15)
| | to sim5: вы не поняли, автор вопроса имеет ввиду то, что если ява-скрипт вынести в отдельный файл, то он перестаёт видеть переменные РНР.
to Poul: я правильно понял? | |
|
|
|
|
|
|
|
для: coloboc66
(12.11.2007 в 09:20)
| | to coloboc66: правильно | |
|
|
|
|
|
|
|
для: Poul
(12.11.2007 в 09:26)
| | Ну значит, я так думаю, нужно подключать JS как результат работы скрипта. Если указать в src РНР, то работать не будет (в кеш будет файл .php), может тогда добавить в конфигурацию сервера исполнение файлов с расширением .js, тогда можно их подключать, определять необходимые переменные, потом print "<script>...</script>"; Думаю должно работать. | |
|
|
|
|
|
|
|
для: sim5
(12.11.2007 в 09:32)
| | На сколько я понял предложение получается такое... в файле:
index.php
<?
$buf_id = $_GET['id'];
include('function.php?buf_id=$buf_id);
|
а файл function.php
<?
$buf_id = $_GET['id'];
?>
<script language="JavaScript">
function closeDoc() {
id = <?print"$buf_id";?>;
alert(id);
}
</script>
|
я все правильно понял? сейчас попробую:) | |
|
|
|
|
|
|
|
для: Poul
(12.11.2007 в 09:37)
| | Нет, так не получится. Тогда уж получать пременные, подставлять их в заготовленные JS шаблон и записывать как файл с расширением .js. Так же у вас в кеш будет файл с расширением .php, а при сохранении из кеша - .html. Будет ошибка при вызове функции.
PS. Нет, даже сделав файл js исполяемым, на стороне клиента в кеше он хотя и сохраняется с js расшерением, но не регистрируется в системе как JS сценарий. Значит надо еще заголовки передавать соответсвующие, иначе это будут как htm файл для системы. | |
|
|
|
|
|
|
|
для: sim5
(12.11.2007 в 09:43)
| | а у меня заработало так как я расписал два файла index.php и function.php через include, отлично работает, спасибо за помощь:)
P.S. Небольшая поправка
index.php
<?
$buf_id = $_GET['id'];
include(function.php);
?>
|
а файл function.php
<script language="JavaScript">
function closeDoc() {
id = <?print"$buf_id";?>;
alert(id);
}
</script>
|
| |
|
|
|
|
|
|
|
для: Poul
(12.11.2007 в 09:59)
| | У меня зарегестрировало в ситеме и заработало только тогда, когда я передаю заголовок:
header ("Content-type: text/javascript");
Без это ошибка получается. Кстати, если передаваемая в JS переменная это текст, то про кавычки надо не забывать в JS переменной. | |
|
|
|
|
|
|
|
для: sim5
(12.11.2007 в 10:11)
| | ну не знаю, у меня сразу заработало. Да тут ничего проблемноо и быть недолжно, php на сервере определяет переменную, далее include файл с кодом Javascript, а он размещается как обычный html. ну и все отправляется клиенту уже сформированный файл с кодом, при просмотре HTML кода на стороне клиента, код файла получается как если бы я изначально вписал его весь в один файл. единственное отличие в том что потом разобрать легче где что находится... странно что пришлось что-то дописывать в заголовок
P.S. про кавычки спасибо что напомнил, там и текст тоже будет:) | |
|
|
|
|
|
|
|
для: Poul
(12.11.2007 в 10:18)
| | Нет, это вы вставляете JS в файл, я пробую прикреплять:
<script language="JavaScript" src="js.php"></script>
либо второй способ давать для Апач .js как исполяемый, в этом случае все в этом файле происходит, но бывает и не получается. Сейчас реанимирую все на 100%, пригодится тоже. ) | |
|
|
|
|
|
|
|
для: sim5
(12.11.2007 в 10:25)
| | заинтересовали, а можно подробнее, если конечно есть возможность? у меня просто с настройками апача вообще беда, мало что понимаю:) | |
|
|
|
|
|
|
|
для: Poul
(12.11.2007 в 10:31)
| | Чуть позже, надо еще разобраться немного. | |
|
|
|
|
|
|
|
для: Poul
(12.11.2007 в 10:31)
| | Значит так, в файле где прописывем заголовки:
<html>
<head>
<script language="JavaScript" src="mainjs.php"></script>
</head>
|
файл mainjs.php
<?
$buf_id = "Hello!";
header ("Content-type: text/javascript");
echo 'function closeDoc() {
id = "'.$buf_id.'";
alert(id);
}';
?>
|
Без передачи заголовка "Content-type: text/javascript" у меня IE иногда выдает ошибку, с ним всегда ОК. | |
|
|
|
|
|
|
|
для: sim5
(12.11.2007 в 10:55)
| | Спасибо... сейчас попробую:) | |
|
|
|