Jump to content
Sign in to follow this  
Taury

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

Recommended Posts

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

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

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

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

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

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

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

 

 

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

Share this post


Link to post
Share on other sites

есть поле

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

Share this post


Link to post
Share on other sites

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

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

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

Share this post


Link to post
Share on other sites

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

Share this post


Link to post
Share on other sites

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

Share this post


Link to post
Share on other sites

Для примера взял часть из 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 кода больше.

Share this post


Link to post
Share on other sites

Для примера взял часть из 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 файла загружается из кеша браузера.

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

Share this post


Link to post
Share on other sites

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

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

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

console.log(MyApp.value1);

Share this post


Link to post
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Guest
You are posting as a guest. If you have an account, please sign in.
Reply to this topic...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

Sign in to follow this  

  • Recently Browsing   0 members

    No registered users viewing this page.

×

Important Information

On our site, cookies are used and personal data is processed to improve the user interface. To find out what and what personal data we are processing, please go to the link. If you click "I agree," it means that you understand and accept all the conditions specified in this Privacy Notice.