Форум: Форум PHPФорум ApacheФорум Регулярные ВыраженияФорум MySQLHTML+CSS+JavaScriptФорум FlashРазное
Новые темы: 0000000
Объектно-ориентированное программирование на PHP. Авторы: Кузнецов М.В., Симдянов И.В. PHP на примерах (2 издание). Авторы: Кузнецов М.В., Симдянов И.В. C++. Мастер-класс в задачах и примерах. Авторы: Кузнецов М.В., Симдянов И.В. PHP 5. На примерах. Авторы: Кузнецов М.В., Симдянов И.В., Голышев С.В. Самоучитель PHP 5 / 6 (3 издание). Авторы: Кузнецов М.В., Симдянов И.В.
ВСЕ НАШИ КНИГИ
Консультационный центр SoftTime

Форум PHP

Выбрать другой форум

 

Здравствуйте, Посетитель!

вид форума:
Линейный форум Структурный форум

тема: PHP и Javascript
 
 автор: Poul   (12.11.2007 в 09:13)   письмо автору
 
 

Подскажите если кто знает.
Есть файл, допустим 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?

   
 
 автор: sim5   (12.11.2007 в 09:15)   письмо автору
 
   для: Poul   (12.11.2007 в 09:13)
 

Ваш первый код и передает перменную в JS.

   
 
 автор: Poul   (12.11.2007 в 09:18)   письмо автору
 
   для: sim5   (12.11.2007 в 09:15)
 

то что первый передает я понимаю, но тогда надо код JS писать в этом же файле. а мне надо в отдельном. и погрузить его так как я описал во втором примере... в файле savedocument находится точно такая же функция как и в первом примере, я понимаю что можно не искать проблемы на одно место и вписать скрипт в файл *.php, но есть проблема. функций на JS на этот документ получается около 20, и половина из них еще и с использованием AJAX, то есть если я все это внесу в один файл. то он получится ну очень трудно разбираем впоследствии

   
 
 автор: coloboc66   (12.11.2007 в 09:20)   письмо автору
 
   для: sim5   (12.11.2007 в 09:15)
 

to sim5: вы не поняли, автор вопроса имеет ввиду то, что если ява-скрипт вынести в отдельный файл, то он перестаёт видеть переменные РНР.
to Poul: я правильно понял?

   
 
 автор: Poul   (12.11.2007 в 09:26)   письмо автору
 
   для: coloboc66   (12.11.2007 в 09:20)
 

to coloboc66: правильно

   
 
 автор: sim5   (12.11.2007 в 09:32)   письмо автору
 
   для: Poul   (12.11.2007 в 09:26)
 

Ну значит, я так думаю, нужно подключать JS как результат работы скрипта. Если указать в src РНР, то работать не будет (в кеш будет файл .php), может тогда добавить в конфигурацию сервера исполнение файлов с расширением .js, тогда можно их подключать, определять необходимые переменные, потом print "<script>...</script>"; Думаю должно работать.

   
 
 автор: Poul   (12.11.2007 в 09:37)   письмо автору
 
   для: 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>

я все правильно понял? сейчас попробую:)

   
 
 автор: sim5   (12.11.2007 в 09:43)   письмо автору
 
   для: Poul   (12.11.2007 в 09:37)
 

Нет, так не получится. Тогда уж получать пременные, подставлять их в заготовленные JS шаблон и записывать как файл с расширением .js. Так же у вас в кеш будет файл с расширением .php, а при сохранении из кеша - .html. Будет ошибка при вызове функции.

PS. Нет, даже сделав файл js исполяемым, на стороне клиента в кеше он хотя и сохраняется с js расшерением, но не регистрируется в системе как JS сценарий. Значит надо еще заголовки передавать соответсвующие, иначе это будут как htm файл для системы.

   
 
 автор: Poul   (12.11.2007 в 09:59)   письмо автору
 
   для: 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>  

   
 
 автор: sim5   (12.11.2007 в 10:11)   письмо автору
 
   для: Poul   (12.11.2007 в 09:59)
 

У меня зарегестрировало в ситеме и заработало только тогда, когда я передаю заголовок:
header ("Content-type: text/javascript");
Без это ошибка получается. Кстати, если передаваемая в JS переменная это текст, то про кавычки надо не забывать в JS переменной.

   
 
 автор: Poul   (12.11.2007 в 10:18)   письмо автору
 
   для: sim5   (12.11.2007 в 10:11)
 

ну не знаю, у меня сразу заработало. Да тут ничего проблемноо и быть недолжно, php на сервере определяет переменную, далее include файл с кодом Javascript, а он размещается как обычный html. ну и все отправляется клиенту уже сформированный файл с кодом, при просмотре HTML кода на стороне клиента, код файла получается как если бы я изначально вписал его весь в один файл. единственное отличие в том что потом разобрать легче где что находится... странно что пришлось что-то дописывать в заголовок
P.S. про кавычки спасибо что напомнил, там и текст тоже будет:)

   
 
 автор: sim5   (12.11.2007 в 10:25)   письмо автору
 
   для: Poul   (12.11.2007 в 10:18)
 

Нет, это вы вставляете JS в файл, я пробую прикреплять:
<script language="JavaScript" src="js.php"></script>
либо второй способ давать для Апач .js как исполяемый, в этом случае все в этом файле происходит, но бывает и не получается. Сейчас реанимирую все на 100%, пригодится тоже. )

   
 
 автор: Poul   (12.11.2007 в 10:31)   письмо автору
 
   для: sim5   (12.11.2007 в 10:25)
 

заинтересовали, а можно подробнее, если конечно есть возможность? у меня просто с настройками апача вообще беда, мало что понимаю:)

   
 
 автор: sim5   (12.11.2007 в 10:45)   письмо автору
 
   для: Poul   (12.11.2007 в 10:31)
 

Чуть позже, надо еще разобраться немного.

   
 
 автор: sim5   (12.11.2007 в 10:55)   письмо автору
 
   для: 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 иногда выдает ошибку, с ним всегда ОК.

   
 
 автор: Poul   (12.11.2007 в 12:36)   письмо автору
 
   для: sim5   (12.11.2007 в 10:55)
 

Спасибо... сейчас попробую:)

   
Rambler's Top100
вверх

Rambler's Top100 Яндекс.Метрика Яндекс цитирования