2012-04-24 2 views
0

Я действительно запутался, когда пытался передать переменные с php на js. все в порядке, когда я пытаюсь получить значение, используя идентификатор
, например:Перенос переменной с php на js

var name = $("#name").val(); 

но мой вопрос, если я хочу, чтобы преобразовать, например, эту переменную:

$id = 182938; //the id of the user 

этой переменной :

var id; 

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

<?php 
$number = rand(); 
?> 

<script language="javascript"> 
var num = <?php echo $number ?> 
</script> 

Есть ли у него тот же эффект, проходя вниз значение?

Спасибо!

+0

Образец выше правильно. Я не уверен, что понимаю ваш вопрос. –

+0

@Paul Мне жаль, что я не понимаю, иногда я получаю свою переменную как неопределенную. мой вопрос в том, что я написал правильно? или есть другой, лучший способ сделать это? Я новичок во всем в js, и это смутило меня ... – Baruch

+0

Если вы используете источник просмотра на странице или что-то вроде alert (num), вы увидите значение num. – jimiyash

ответ

1

Не совсем. Кодирование как JSON гарантирует, что оно является допустимым литералом JavaScript.

var num = <?php echo json_encode($number) ?> 
+0

Почему в мире используется 'json_encode' для этого? – Jasper

+0

@ Jasper: Потому что это не всегда может быть число. –

+2

@ Jasper, у вас может быть строка вместо числа, которое вызовет JS-ошибку с методом Джозефа. Я думаю, что json encode немного перегружен, и если я знаю, что это строка, я обычно просто «var str =» "', Которая работает до тех пор, пока у вас нет двойных кавычек , Не забывайте, что вы заканчиваете ';' @ Ignacio ;-) –

0

что код делает:

<?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> 
-1

Вы должны генерировать синтаксически ДЕЙСТВИТЕЛЬНЫЙ JavaScript. PHP может отсылать текст в ЛЮБОЙ части страницы, которую он генерирует, но это не обязательно означает, что это фактически текст USABLE. В вашем случае, вы забыли ;, так что ваш генерироваться Javascript на самом деле ошибка синтаксиса:

var num = <?php echo $number ?>; 
           ^--- missing 

Такая же вещь происходит, когда вы выводите текст. Подумайте, где вы храните чье-то имя в переменную:

<?php 
    $name = "Miles O'Brien"; // <-- note the single quote 
?> 
<script> 
    var name = <? php echo $name ?>; 
</script> 

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

var name = Miles O'Brien; 

нет никаких кавычек вокруг всей строки , а встроенная цитата будет начинать строку в javascript, заставляя интерпретатора JS жаловаться на неопределенную переменную «Miles», неопределенную переменную «O» и непрерывный строковый литерал.

Вместо этого, PHP должен быть:

var name = <? echo json_encode($name) ?>; 

инкапсуляции гарантирует JSON, что вы встраивание синтаксически допустимые значения Javascript.

+0

Хотя я не защищаю (или даже потворствую), оставляя их, точки с запятой * являются необязательными, поэтому это не проблема, о которой вы говорите. – Jasper

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