2014-11-24 4 views
0

Я создаю переменные из циклов в PHP и JavaScript с использованием тех же имен. Эти имена хранятся в массивах (один в PHP, а другой в JS). Каждая переменная в PHP имеет информацию, которую мне нужно передать в JavaScript. Теперь это работает:Доступ к переменной PHP из переменной цикла JavaScript

vars_jsarray =["Name1", "Name2", "Name3"]; 

for (var i = 0; i < vars_jsarray.length; i++){ 
    this[vars_jsarray[i]] = [<?=${$vars_phparray[0]};?>]; 
} 

Я хочу изменить это «0» и вместо этого использовать переменную «i». Что-то подобное может работать тоже (потому что массивы одинаковы):

vars_jsarray =["Name1", "Name2", "Name3"]; 

for (var i = 0; i < vars_jsarray.length; i++){ 
    this[vars_jsarray[i]] = [<?=${vars_jsarray[i]};?>]; 
} 

Как я могу получить доступ к переменной PHP, используя этот цикл JavaScript?

+3

Смешивание языков программирования в целом очень плохое, особенно в этом случае (JavaScript - клиентская сторона, но PHP - серверная сторона). Вы должны взглянуть на такие понятия, как AJAX, где клиент взаимодействует с сервером, позволяя ему иметь доступ к своим данным, отправляя его на сервер с клиента и наоборот. – Jonast92

+0

Вы можете использовать переменную php в javascript с помощью php-тега. –

ответ

0

Предполагая, что массивы точно так же, падение цикла JS и использовать PHP одно:

<?php 
    for ($i = 0; $i < count($vars_phparray); $i++){ 
    echo "this[ {$vars_phparray[$i]} ] = [ {$vars_phparray[$i]} ];"; 
    } 
?> 

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

Вместо этого вы можете использовать некоторые AJAX для захвата данных со своего сервера as it described here.

+0

Downvoter поделился комментарием? –

+0

В итоге я использовал что-то вроде этого. Спасибо. Не удалось найти решение в JS :) – Aleharu

0

Off верхней части моей головы

vars_jsarray =["Name1", "Name2", "Name3"]; 
vars_js_phparray = [<?=implode("," $vars_phparray);?>] 

for (var i = 0; i < vars_jsarray.length; i++){ 
    this[vars_jsarray[i]] = [vars_js_phparray[i]]; 
} 

Не уверен, если это решит ваши требования, но основываясь на вашем примере это точная копия.

0

Вы не понимаете, как работает PHP; это, безусловно, не сработает - не в его нынешнем виде.

В общем, PHP сначала создаст HTML-документ, который является , а затем отправлен клиенту (браузеру). На этом этапе PHP-скрипт завершен с выполнением вашей серверной стороны *.

Приведенный документ может содержать JavaScript, который будет работать на клиенте после. Фактическая страница отправлена ​​клиенту. Нет обратной связи, если вы не используете вызовы AJAX, но это гораздо лучше структурировано, чем простое смешивание языка.

То есть, в этом случае вы в основном пишете JavaScript в браузере клиента с помощью PHP, который будет запущен на клиенте. Рассмотрим следующий пример:

PHP код

echo "<script>"; 

for ($i = 0; $i < 3; $i++) 
{ 
    echo "console.log('Let us write something into console: $i');"; 
} 

echo "</script>"; 

Этот код будет отправить следующую страницу клиенту:

HTML/JavaScript

<script> 
    console.log('Let us write something into console: 0'); 
    console.log('Let us write something into console: 1'); 
    console.log('Let us write something into console: 2'); 
</script> 

Когда выше выполняется очень простой Javascript, нет доступа к PHP $i, который использовался для его создания, поскольку он больше не существует. Конечно, не на машине клиента.


* Предполагая, что используется выходной буфер, в противном случае страница отправляется по мере ее создания по очереди.

0

Вы можете получить доступ к PHP переменные в JS соответственно:

var jsVar = <?php echo $phpVar; ?>; 

Но, опять же, я не рекомендую. Используйте AJAX.

Смежные вопросы