2013-03-27 2 views
3

Я передаю переменную PHP в Javascript, но только в определенной точке кода. По мере того как PHP-код продолжается, переменная мне нужна. Я мог бы просто запустить Javascript и захватить переменную PHP, когда страница будет загружена, но это не будет передавать информацию, которую я хочу. Я хочу, чтобы Javascript захватывал переменную PHP в этой точке, а затем игнорировал последующие изменения.Передача переменной PHP в Javascript в определенный момент

Фактическая программа, с которой я работаю, состоит из нескольких тысяч строк кода, поэтому я создал простую страницу, чтобы обходиться с этой проблемой. В приведенном ниже коде показано, что я пытаюсь сделать.

<?php 
$php_var = 'something'; 
if(true) { 
    $php_var = 'new'; 
    echo ' 
     <script type="text/javascript"> 
      js_var="<?php echo $php_var; ?>"; 
      alert(js_var); 
     </script> 
    '; 
} 
$php_var = 'later changes'; 
?> 

<script type="text/javascript"> 
    var js_var; 
</script> 

Это не работает. js_var устанавливается, когда запущен встроенный скрипт, но он просто установлен в строку, которая говорит <?php echo $php_var; ?>, а не фактически ее оценивает.

+0

это потому, что - это дополнительные и одиночные кавычки, которые не обрабатывают переменные. try echo (""); –

ответ

2

PHP запускается первым, и все, что отправлено JS в браузер, запускается. Я думаю, вы просто хотите:

echo '<script type="text/javascript"> 
    js_var = '.json_encode($php_var).'; 
    alert(js_var); 
</script>'; 
+0

Да. Это и есть. Благодаря! – Steve

1
$php_var = "foo"; 
echo ' 
    <script> 
     var js_var = '. json_encode($php_var) .'; 
     alert(js_var); 
    </script> 
'; 

Производит:

<script> 
var js_var = "foo"; 
alert(js_var); 
</script> 
+2

'$ php_var' должно быть как' json_encode ($ php_var); ' –

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