Перейти к содержанию
Taury

Как перенести данные из PHP в JS?

Рекомендуемые сообщения

Собственно есть шаблон,

В нём есть замечательная функция "перезвоните мне".

Мне нужно сделать одну из двух вещей:

1) перенести переменную <?php echo $product['product_id']; ?> их PHP в JS,

2) просто получить в самом JS адрес страницы, на которой произошло действие.

Как вы уже поняли, с помощью этой маленькой хитрости кнопка "перезвоните мне" превратиться в "быстрый заказ".

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

 

 

Проблемы и не  было, оказывается. Всё и так корректно работало...

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

есть поле

<input type="hidden" value="NNN" size="2" name="product_id">

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

1) или (как у chukcha) забрать с input или 

<script type="text/javascript"><!--
 var product_product_id = <?php echo json_encode($product['product_id']); ?>;
//--></script>

P.S. а то нехорошо оставлять, на нашем форуме, тему без решения )

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Раз уж тут такая тема. Есть некий скрипт внутри шаблона модуля, в котором задействованы пхп вызовы. Можно ли такой скриптик вынести во внешний файл и передавать ему значение тех пхп переменных? Все хочу у себя повытаскивать все инлайн скрипты в отдельные файлы и подгружать только там, где нужно.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Без примера, вашу мысль не понять

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Для примера взял часть из xml'ки бесплатного модуля и поскипал часть простынки из кода.

<script>
$(function(){
var i = (!!$("#livesearch").length ? $("#livesearch") : $("<ul id='livesearch'></ul>") ), s = $("#header [name=search]");
function repositionLivesearch() { i.css({ top: (s.offset().top+s.outerHeight()), left:s.offset().left, width: s.outerWidth() }); }
$(window).resize(function(){ repositionLivesearch(); });
s.keyup(function(e){
switch (e.keyCode) {
 
поскипано
 
if (query.length > 2) {
$.getJSON(
"<?php echo HTTP_SERVER; ?>?route=product/search/livesearch&search=" + query,
function(data) {
i.empty();
$.each(data, function( k, v ) { i.append("<li><a href='"+v.href+"'><img src='"+v.img+"' alt='"+v.name+"'><span>"+v.name+"</span></a></li>") });
i.remove(); $("body").prepend(i); repositionLivesearch();
}
);
} else {
i.empty();
}
}
}).blur(function(){ setTimeout(function(){ i.hide() },500); }).focus(function(){ repositionLivesearch(); i.show(); });
});
</script>
 
Там есть такая чтучка как <?php echo HTTP_SERVER; ?>. Когда выносил этот инлайн скрипт в отдельный файл, то банально прописал вмето этого адрес сайта. Но есть более сложные модули, в которых этих пхп вставок внутри js кода больше.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Для примера взял часть из xml'ки бесплатного модуля и поскипал часть простынки из кода.

<script>
$(function(){
var i = (!!$("#livesearch").length ? $("#livesearch") : $("<ul id='livesearch'></ul>") ), s = $("#header [name=search]");
function repositionLivesearch() { i.css({ top: (s.offset().top+s.outerHeight()), left:s.offset().left, width: s.outerWidth() }); }
$(window).resize(function(){ repositionLivesearch(); });
s.keyup(function(e){
switch (e.keyCode) {
 
поскипано
 
if (query.length > 2) {
$.getJSON(
"<?php echo HTTP_SERVER; ?>?route=product/search/livesearch&search=" + query,
function(data) {
i.empty();
$.each(data, function( k, v ) { i.append("<li><a href='"+v.href+"'><img src='"+v.img+"' alt='"+v.name+"'><span>"+v.name+"</span></a></li>") });
i.remove(); $("body").prepend(i); repositionLivesearch();
}
);
} else {
i.empty();
}
}
}).blur(function(){ setTimeout(function(){ i.hide() },500); }).focus(function(){ repositionLivesearch(); i.show(); });
});
</script>

 

Там есть такая чтучка как <?php echo HTTP_SERVER; ?>. Когда выносил этот инлайн скрипт в отдельный файл, то банально прописал вмето этого адрес сайта. Но есть более сложные модули, в которых этих пхп вставок внутри js кода больше.

 

 

Выход выноса скриптов с php вставками переменных есть: прописываете (модулем) где-то что-то типа такого на странице в любом месте

        <noindex>
            <div class="container_vars" style="display: none">
                <div id="container_vars_product_id" class="product_id"><?php echo $product_id; ?></div>
            </div>
        </noindex>

Выносите скрипт в отдельный файл, а там берете переменную (переменные) в стиле:

var product_id = $('#container_vars_product_id').html();

Можете вообще автоматизировать подгрузку переменных

Приблизительно так вынес код JS в отдельный файл своего модуля и читаю переменные php таким методом

load_vars = function (this_data) {
    var avars = {};
    avars['product_id'] = $('#' + $(this_data).closest('div[id] .container_vars').attr('id')).find('.product_id:first').text();
...

И пользуетесь массивом переменных документа через php во внешнем JS файле

Это уменьшает размер документа и JS файла загружается из кеша браузера.

Получается унификация

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Ещё один вариант:

window.MyApp = {
  value1: '<?php echo $var1; ?>',
  value2: '<?php echo $var2; ?>'
}

Получить доступ к этим данным будет возможно из любого места.

console.log(MyApp.value1);

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Для публикации сообщений создайте учётную запись или авторизуйтесь

Вы должны быть пользователем, чтобы оставить комментарий

Создать учетную запись

Зарегистрируйте новую учётную запись в нашем сообществе. Это очень просто!

Регистрация нового пользователя

Войти

Уже есть аккаунт? Войти в систему.

Войти

  • Последние посетители   0 пользователей онлайн

    Ни одного зарегистрированного пользователя не просматривает данную страницу

×

Важная информация

На нашем сайте используются файлы cookie и происходит обработка некоторых персональных данных пользователей, чтобы улучшить пользовательский интерфейс. Чтобы узнать для чего и какие персональные данные мы обрабатываем перейдите по ссылке. Если Вы нажмете «Я даю согласие», это означает, что Вы понимаете и принимаете все условия, указанные в этом Уведомлении о Конфиденциальности.