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

HTML+CSS+JavaScript

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

 

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

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

тема: Вынос в отдельный файл javascript
 
 автор: mikado3333   (28.01.2013 в 11:15)   письмо автору
 
 

Приветствую!!!
есть код

    function fv_Zagryzka_spiskov () //загрузка списков зависемости от самолета
        {
            document.getElementById("spisok1").innerHTML = Slugbe;    
            document.getElementById("spisok2").innerHTML = Slugba;
            document.getElementById("spisok").innerHTML = document.getElementById("spisok").innerHTML +  <?=$Ty;?>;
            document.getElementById("checkbox3").className="input_spisok_dv";
        }


Код рабочий - работает если находится в общем коде (в body). При выносе в отдельном файле не работает. Не нравиться скрипт php. Что не так?

  Ответить  
 
 автор: btr   (28.01.2013 в 11:44)   письмо автору
 
   для: mikado3333   (28.01.2013 в 11:15)
 

если не ошибаюсь, только в файле .php можно такой финт ушами делать .

  Ответить  
 
 автор: DJ Paltus   (28.01.2013 в 11:49)   письмо автору
 
   для: mikado3333   (28.01.2013 в 11:15)
 

Выносим скрипт в файл .js? А сервер не будет в нем исполнять php-скрипты. Поэтому придумайте, как передать переменную в функцию при вызове.

  Ответить  
 
 автор: mikado3333   (28.01.2013 в 12:10)   письмо автору
 
   для: DJ Paltus   (28.01.2013 в 11:49)
 

ошибка в браузере Unexpected token < -такое чувство что ему кавычка не нравиться, а не сам php/

  Ответить  
 
 автор: btr   (28.01.2013 в 12:13)   письмо автору
 
   для: mikado3333   (28.01.2013 в 12:10)
 

файл js подключается на клиенте, ему синтаксис пхп незнаком, вот и ругается :)

  Ответить  
 
 автор: mikado3333   (28.01.2013 в 12:19)   письмо автору
 
   для: btr   (28.01.2013 в 12:13)
 

понял, Всем большое спасибо!

  Ответить  
 
 автор: ЯСА   (28.01.2013 в 17:37)   письмо автору
 
   для: mikado3333   (28.01.2013 в 11:15)
 

в файле .htaccess в инструкциях AddType и/или AddHandler прописаны типы файлов, в которых разрешается выполнение PHP-сценариев
что-то типа такого:
AddType application/x-httpd-php .php .html
или
AddHandler application/x-httpd-php .php .html

файлы типа .js обычно туда не включаются
добавьте
AddType application/x-httpd-php .php .html .js
или
AddHandler application/x-httpd-php .php .html .js

  Ответить  
 
 автор: btr   (28.01.2013 в 17:41)   письмо автору
 
   для: ЯСА   (28.01.2013 в 17:37)
 

это вроде для include()?
разве пхп будет просматривать файл, подключенный тегом <script>?
мне кажется, что этом уже браузер занимается? ошибаюсь?

  Ответить  
 
 автор: ЯСА   (28.01.2013 в 17:52)   письмо автору
 
   для: btr   (28.01.2013 в 17:41)
 

1. ЛЮБЫЕ файлы ВСЕГДА находятся на сервере и ВСЕГДА там остаются

2. в браузер с сервера поступает ЦИФРОВАЯ КОПИЯ файла

3. для того, чтобы цифровая копия файла поступила в браузер, браузер отсылает HTTP-ЗАПРОС серверу

4. сервер, получив этот http-запрос, отсылает браузеру HTTP-ОТВЕТ, в котором сообщает о существовании запрашиваемого файла на сервере и, если такой файл есть - минимальную информацию о нём, в том числе размер файла и дату его последнего изменения

5. браузер, получив размер и дату, ищет такой файл в своём кеше - если имеющийся в кеше файл имеет такие же размер и дату, то браузер прекращает общение с сервером и берёт файл из своего кеша

6. если же файла в кеше нет (или он иного размера или с просроченной датой), то браузер просит сервер дать ему цифровую копию файла

7. сервер, получив эту отмашку, начинает "готовить" эту цифровую копию и при этом "изготовлении" сервер "оглядывается" на установки, прописанные в файле .htaccess

и ещё раз повторяю - таковые действия происходят при передаче браузеру цифровых копий ЛЮБЫХ файлов - и .php, и .html, и .jpg, и .gif, и .css, и .js ...

  Ответить  
 
 автор: btr   (28.01.2013 в 18:04)   письмо автору
 
   для: ЯСА   (28.01.2013 в 17:52)
 

это все понятно
но мне кажется, сейчас Вы не о том..

есть файл page.php
являющийся скриптом для динамического изготовления документа штмл

в нем есть строка типа:
echo "<SCRIPT src='js\func.js'></SCRIPT>";
которую пхп выполнил и отправил браузеру.
файл func.js запрашивается браузером отдельно уже вне потока исполнения скрипта page.php,
соответственно, кусочек пхп кода в нем невозможен???

поправьте, если не так понимаю?

  Ответить  
 
 автор: ЯСА   (28.01.2013 в 18:16)   письмо автору
 
   для: btr   (28.01.2013 в 18:04)
 

опять не поняли

1. никакого "потока исполнения PHP-скрипта" не существует

2. существует процесс изготовления цифровой копии файла

3. происходит этот процесс на сервере по http-запросу браузера

4. получил сервер запрос на копию файла page.php - он его изготовил, включив ТОЛЬКО на время "изготовления" PHP-интерпретатор

5. как только сервер "изготовил" копию, PHP-интерпретатор выключается и только после этого сервер отправляет браузеру цифровую копию файла page.php
цифровая копия файла page.php уже не содержит никаких echo и print - в ней только HTML+CSS+JS

6. браузер, получив цифровую копию файла page.php, начинает его отображать в браузере

7. встретит браузер при отображении тег <img src="mypic.gif">, браузер посылает серверу НОВЫЙ http-запрос на получение копии файла mypic.gif и происходит всё то, что я описал в предыдущем своём посте в семи пунктах, в том числе и подключает при необходимости PHP-интерпретатор
а встретит <SCRIPT src='js\func.js'></SCRIPT>, посылает НОВЫЙ запрос на получение копии файла js\func.js... и заново, если нужно, включит PHP-интерпретатор на время изготовления этого файла

PHP-интерпретатор работает только на сервере
PHP-интерпретатор - это простой слесарь на заводе, который собирает автомобиль (цифровую копию файла)
и этот работяга совершенно НЕ ЗНАЕТ, какой олигарх (браузер) этот автомобиль купит
это знает только его начальство (сервер), получив предоплату (http-запрос от браузера)

единственное отличие слесаря АВТОВАЗА от PHP-интерпретатора - слесарь работает посменно и может работать "впрок" по плану, посылая автомобили на склад
а PHP-интерпретатор вызывается исключительно при необходимости и только на время изготовления копии конкретного файла

  Ответить  
 
 автор: btr   (28.01.2013 в 18:28)   письмо автору
 
   для: ЯСА   (28.01.2013 в 18:16)
 

мы с Вами спорим непонятно о чем. опять я полностью с Вами согласен, и опять Вы не о том.

конкретно: Ваш 7пн.:
встретит <SCRIPT src='js\func.js'></SCRIPT>, посылает НОВЫЙ запрос на получение копии файла js\func.js... и заново, если нужно, включит PHP-интерпретатор на время изготовления этого файла

но информация об объявленных переменных и проч для пхп будет отсутствовать, что он поставит на место переменной $Ty?

  Ответить  
 
 автор: ЯСА   (28.01.2013 в 18:34)   письмо автору
 
   для: btr   (28.01.2013 в 18:28)
 

а это уже ВАША забота
js\func.js - это отдельный файл, с файлом page.php НИКАК НЕ СВЯЗАННЫЙ

если делаете PHP-вставку в этом js-файле, то вы должны понимать, что PHP-интерпретатор включится ВНОВЬ и никаких переменных в этом файле не будет предопределено... кроме переменных окружения, которые PHP-интерпретатор получит от сервера (а тот - от браузера) при http-запросе

  Ответить  
 
 автор: btr   (28.01.2013 в 18:39)   письмо автору
 
   для: ЯСА   (28.01.2013 в 18:34)
 

:) не моя, а автора поста :)

и опять не могу с Вами не согласиться :)
думаю, вопрос исчерпан досуха

как появятся вопросы - обязательно к Вам обращусь

  Ответить  
 
 автор: Deed   (28.01.2013 в 20:43)   письмо автору
 
   для: ЯСА   (28.01.2013 в 18:34)
 

ЯСА, здравствуйте!
У Вас талант все объяснить исчерпывающе и наглядно. Спасибо большое.

По сути. В php мы можем хэдером формировать HTTP-заголовки. Так?
Например:

<?
//"ip.php" example- display user IP address on any page
Header("content-type: application/x-javascript");
$serverIP=$_SERVER['REMOTE_ADDR'];
echo 
"document.write(\"Your IP address is: <b>" $serverIP "</b>\")";
?>

And once called by external JavaScript:

<script type="text/javascript" src="ip.php"></script>


Header("content-type: application/x-javascript"); - и браузер развесит уши.

http://www.javascriptkit.com/javatutors/externalphp.shtml

  Ответить  
 
 автор: ЯСА   (28.01.2013 в 21:27)   письмо автору
 
   для: Deed   (28.01.2013 в 20:43)
 

и так можно

но и здесь в файле ip.php надо помнить, что PHP-интерпретатор включится ВНОВЬ и никаких переменных, кроме переменных окружения, этот интерпретатор при своём включении не знает

в вашем примере как раз использована переменная окружения REMOTE_ADDR
------------

"талант все объяснить исчерпывающе и наглядно" - он имеется у каждого

"любую (даже самую сложную) проблему можно объяснить на пальцах любому (даже самому тупому), но при одном условии - если объясняющий сам понимает эту проблему"

это не я сказал
это академик Капица

  Ответить  
 
 автор: Deed   (28.01.2013 в 22:48)   письмо автору
 
   для: ЯСА   (28.01.2013 в 21:27)
 

Мне стало интересно, и я в подключаемый файл передал через сессию длинную-предлинную строку.
И она вывелась. Хотя, да, переменные из состава $_SESSION являются переменными окружения. И это хорошо. Через POST, GET & SESSION мы можем динамически менять сценарий JS.
В противном случае я не вижу смысла в подобных ухищрениях.

  Ответить  
 
 автор: mikado3333   (30.01.2013 в 00:31)   письмо автору
 
   для: Deed   (28.01.2013 в 22:48)
 

Если кому интересно. То я просто заменил js на php и запехнул include- ом. Как я понял браузер пропустил бы если бы я переменную Ty взял бы в кавычки, посчитав ее за строку. Но так как это полученная переменная является именем переменной javascript в кавычки брать нельзя. Иначе вместо переменной с ее содержанием получи просто текст Ту(если одинарные) или значение $ty (если двойные) в виде строки. Поправьте если я не прав.

  Ответить  
 
 автор: confirm   (30.01.2013 в 10:46)   письмо автору
 
   для: mikado3333   (30.01.2013 в 00:31)
 

Если вы ради одной переменной будете скармливать php-парсеру пустое для него, то ничего хорошего из этого не получится. Выносите эти переменные из js-файла и используйте их как глобальные js-переменные, формируемые в js-коде на странице. А весь остальной js-массив как подключаемые внешние файлы.

  Ответить  
Rambler's Top100
вверх

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