Javascript.RU

Создать новую тему Ответ
 
Опции темы Искать в теме
  #1 (permalink)  
Старый 03.09.2014, 12:26
Аспирант
Отправить личное сообщение для зверек Посмотреть профиль Найти все сообщения от зверек
 
Регистрация: 18.06.2009
Сообщений: 88

script.js и переменные из php
Если в код js необходимо вставить переменную из php скрипта, то потом этот код нельзя вынести в отдельный файл myscript.js
Как поступают в таких случаях?

я делаю так:
<script type="text/javascript">
var k1='<?=$k1?>';
var k2='<?=$k2?>';
</script>

<script type="text/javascript" src="myscript.js"></script>


И в этом myscript.js уже использую переменные k1 и k2

Но как-то я не уверен, что это правильно или оптимально. Как надо делать?
Ответить с цитированием
  #2 (permalink)  
Старый 03.09.2014, 12:31
Профессор
Отправить личное сообщение для tsigel Посмотреть профиль Найти все сообщения от tsigel
 
Регистрация: 12.12.2012
Сообщений: 1,398

Надо делать чистый HTML без php, а все что надо - тянуть через AJAX.
Ответить с цитированием
  #3 (permalink)  
Старый 03.09.2014, 12:56
Аспирант
Отправить личное сообщение для зверек Посмотреть профиль Найти все сообщения от зверек
 
Регистрация: 18.06.2009
Сообщений: 88

Чистый html не всегда возможно написать. Например, нужно вывести таблицу, число столбцов в которой напрямую зависит от некоего условия в php скрипте.
Ответить с цитированием
  #4 (permalink)  
Старый 03.09.2014, 13:06
Профессор
Отправить личное сообщение для tsigel Посмотреть профиль Найти все сообщения от tsigel
 
Регистрация: 12.12.2012
Сообщений: 1,398

Ну на мой взгляд надо разделять клиентскую и серверную логику и будуйщее за singlePage application. Так что на клиенте должны быть шаблоны страниц, а сервер только управляет бизнес логикой и дает данные.
Ответить с цитированием
  #5 (permalink)  
Старый 03.09.2014, 13:15
Аспирант
Отправить личное сообщение для зверек Посмотреть профиль Найти все сообщения от зверек
 
Регистрация: 18.06.2009
Сообщений: 88

Да, этот подход конечно неоспорим, когда речь идет о крупном проекте над которым работают верстальщики, дизайнеры, программеры...И каждому должно быть удобно и понятно. Но если речь идет о небольшом сайте, поддержкой которого от силы двое занимаются, то усложнять код шаблонами смысла нет, на мой субъективный взгляд.

А все-таки, как шаблоны решают задачу, когда количество столбцов таблицы зависит от условия, которое определяется на сервере в момент загрузки страницы?
Ответить с цитированием
  #6 (permalink)  
Старый 03.09.2014, 13:42
Аватар для ixth
Профессор
Отправить личное сообщение для ixth Посмотреть профиль Найти все сообщения от ixth
 
Регистрация: 19.01.2010
Сообщений: 354

Складываешь все в один большой массив-неймспейс и отдаешь клиенту одним объектом. Формально это не json, но при желании, в будущем можно вынести это в отдельный файл и дергать по науке, как json-ручку. Ну, и все под рукой: в консоли всегда можно посмотреть что пришло с сервера, просто посмотрев содержимое переменной.

<?
$json_state = Array();
$json_state['table_rows'] = 100500;
$json_state['table_cols'] = 1;
?>

<script>
var State = <?= json_encode($json_state); ?>;
</script>
Ответить с цитированием
  #7 (permalink)  
Старый 03.09.2014, 13:44
Профессор
Отправить личное сообщение для tsigel Посмотреть профиль Найти все сообщения от tsigel
 
Регистрация: 12.12.2012
Сообщений: 1,398

Условие лишь формирует массив данных которые придут на клиент, и не важно через HTML или AJAX. А прогоняя данные через шаблон мы получаем страницу с динамическим количеством колонок и столбцов.

Пример темплейта с переменным количеством столбцов и строк на angularjs:

<table>
   <tr ng-repeat="row in rows">
      <td ng-repeat="cal in row.cals">{{ cal }}</td>
   </tr>
</table>
Ответить с цитированием
  #8 (permalink)  
Старый 03.09.2014, 13:47
Аватар для ixth
Профессор
Отправить личное сообщение для ixth Посмотреть профиль Найти все сообщения от ixth
 
Регистрация: 19.01.2010
Сообщений: 354

Сообщение от зверек Посмотреть сообщение
А все-таки, как шаблоны решают задачу, когда количество столбцов таблицы зависит от условия, которое определяется на сервере в момент загрузки страницы?
Декларативные — никак, их просто натравливаешь на данные и говоришь как рендерить строки и колонки, дальше они сами все делают. Императивные — чуть сложнее, проходом foreach каким-нибудь, все зависит от возможностей шаблонизатора.
Ответить с цитированием
  #9 (permalink)  
Старый 03.09.2014, 14:21
Аспирант
Отправить личное сообщение для зверек Посмотреть профиль Найти все сообщения от зверек
 
Регистрация: 18.06.2009
Сообщений: 88

Спасибо!
Ответить с цитированием
  #10 (permalink)  
Старый 03.09.2014, 14:22
Аватар для Erolast
Профессор
Отправить личное сообщение для Erolast Посмотреть профиль Найти все сообщения от Erolast
 
Регистрация: 24.09.2013
Сообщений: 1,436

Никто не мешает делать так:
<!-- index.html -->
<script type="text/javascript" src="somescript.php"></script>

<?php
//somescript.php
header('Content-type: text/javascript');
$one = 1;
?>

var one = <?= $one ?>;
alert(one);
Ответить с цитированием
Ответ



Опции темы Искать в теме
Искать в теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Как добавить результаты работы скрипта в переменные PHP? Hurray Events/DOM/Window 1 03.11.2013 15:29
из массива json в (php) переменные Sadist_dead Работа 2 25.08.2011 17:23
из массива json в (php) переменные Sadist_dead AJAX и COMET 6 24.08.2011 22:58
Не передаются переменные Ajax php форма Saimon7887 AJAX и COMET 1 16.01.2011 13:57
Вывести все пост переменные PHP mycoding Серверные языки и технологии 4 21.06.2010 21:52