2014-02-15 3 views
0

Я хотел бы переписать переменную с PHP на javascript. Что не так в моем сценарии? Благодарю.переменная перехода от php к javascript

<!DOCTYPE html> 
<HTML> 
    <HEAD> 
    <META charset="UTF-8"> 
    <TITLE>Převzetí proměnné z PHP do Javascript</TITLE> 
    </HEAD> 
    <BODY> 
     <?php 
     $variable = 'Já jsem proměnná'; 
     echo $variable.'<BR />'; 
     ?> 
     <SCRIPT> 
     var x = $variable; 
     document.write(x); 
     </SCRIPT> 
    <BODY> 
</HTML> 
+1

возможно дубликат [Как получить доступ к PHP переменные в JavaScript или JQuery, а не ] (Http://stackoverflow.com/questions/1808108/how-to-access-php -variables-in-javascript-или-jquery-rather-than-php-echo-vari) –

ответ

0

попробовать использовать что-то вроде этого:

<?php $myvar = 'test' ?> 
<?php echo '<script type="text/javascript">var myvar = "'.$myvar.'";</script>'; 

или изменения

var x = $variable; 

в

var x = "<?php echo $variable ?>"; 

должен работать.

+0

нет, вы не добавляете кавычки. Вы используете json_encode(), который делает все это для вас. –

+0

@Marc B Вы должны добавить кавычки. Без него это не сработает. Я протестировал его. –

+0

нет. '$ foo = 'foo'; echo json_encode ($ foo); 'будет выводить' 'foo" ', WITH кавычки. Помните, что JSON по существу является правой частью переменной assignemt в Javascript, поэтому любые выходы json_encode() должны быть действительными, если вы непосредственно вводите этот вывод в RH.S присваивания. Единственное, что вам нужно добавить, это ';' в конце строки. 'var foo = ; '. –

-1

Вы должны эхо PHP прямо туда, где хотите его использовать.

var x = "<?php echo $variable; ?>"; 
+0

вам нужно json_encode() значение, так как вы выводите в контекст javascript ... не можете просто выгрузить необработанную строку и ожидать, что она будет работать. –

0

Используйте это:

var x = '<?php echo $variable; ?>'; 
+1

Нет. Вы этого не делаете. Вы используете json_encode(). Вы не представили JS-эквивалент атаки на SQL-инъекцию ... –

+0

thumbs up! +1 Marc B – Akhilesh

+0

Пожалуйста, объясните свой ответ вкратце, чтобы сделать его более полезным для OP и других читателей. –

4

$variable является строкой, поэтому назначение JavaScript должен быть указаны:

var x = "<?php echo addslashes($variable); ?>";document.write(x);


Обновлено в json_encode (спасибо Marc B).

<!doctype html> 
<title>Převzetí proměnné z PHP do Javascript</title> 
<meta charset="utf-8"/> 
<script> 
    <?php $variable = 'Já jsem proměnná - testing "double quotes" and \'single quotes\''; ?> 
    var x = <?php echo json_encode($variable); ?>; 
    document.write(x); 
</script> 
+0

ПЛОХАЯ идея. addlashes бесполезно в этом контексте. addlashes больше не должно существовать. Вы хотите json_encode(). –

+0

Да, это отличный момент, я буду обновлять спасибо. –

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