Я действительно запутался, когда пытался передать переменные с php на js. все нормально, когда я пытаюсь получить значение, используя идентификатор
например:
var name = $("#name").val();
но мой вопрос: если я хочу преобразовать, например, эту переменную:
$id = 182938; //the id of the user
к этой переменной:
var id;
этот вопрос может быть немым … может быть, легко для вас, но не для меня: p
Я просмотрел его и нашел только что-то подобное в любом месте, где я искал:
<?php $number = rand(); ?> <script language="javascript"> var num = <?php echo $number ?> </script>
Имеет ли он такое же влияние, как и снижение значения?
Благодаря!!
Не совсем. Кодирование как JSON гарантирует, что оно является допустимым литералом JavaScript.
var num = <?php echo json_encode($number) ?>
что делает код:
<?php $number = rand(); //assign random number to $number. let's say it's "3" ?> //then these are printed on the page normally <script language="javascript"> var num = <?php echo $number ?> //the $number is echoed at this position </script>
а затем браузер получает:
<script language="javascript"> var num = 3; </script>
Вы должны генерировать синтаксически VALID javascript. PHP может отсылать текст в ЛЮБОЙ части страницы, которую он генерирует, но это не обязательно означает, что это фактически текст USABLE. В вашем случае вы забыли a ;
, поэтому ваш сгенерированный javascript на самом деле является синтаксической ошибкой:
var num = <?php echo $number ?>; ^--- missing
То же самое происходит, когда вы выводите текст. Рассмотрим, где вы храните чье-то имя в переменной:
<?php $name = "Miles O'Brien"; // <-- note the single quote ?> <script> var name = <? php echo $name ?>; </script>
Этот LOOKS одобрен, но он будет генерировать еще одну синтаксическую ошибку:
var name = Miles O'Brien;
во всей строке нет кавычек, а встроенная цитата будет начинать строку в javascript, заставляя интерпретатора JS жаловаться на неопределенную переменную «Miles», неопределенную переменную «O» и непрерывный строковый литерал.
Вместо этого PHP должен был быть:
var name = <? echo json_encode($name) ?>;
Инкапсуляция JSON гарантирует, что вы вставляете синтаксически допустимые значения Javascript.