2013-09-24 3 views
0

моего PHP кода имеет значение 2 цифры, какзначения trasfering от PHP для яваскрипта несовместимого

$var1 = 16; 
$var2 = 24; 
$var3 = 31; 

но когда я использовал эти значения и поместить его в моей JavaScript, как, например,

var var1 = <?php echo $var1; ?> 
var var2 = <?php echo $var2; ?> 
var var3 = <?php echo $var3; ?> 

console.log(var1+"-"+var2+"-"+var3) 

вывод **1-2-3** вместо **16-24-31**, он получает только первую цифру, даже ставлю функцию window.onload, чтобы загрузить php и html сначала перед скриптом.

+3

* я даже положить 'window.onload' функцию, чтобы убедиться, чтобы загрузить PHP и HTML первый перед скриптом * <- это. это EPIC. –

+0

Если вы просматриваете источник страницы, выполните те же (1-2-3) значения в части 'var var1 = etc..' кода? – Novocaine

+0

* ', чтобы загрузить php и html сначала перед скриптом * - PHP выполняется на сервере, после запроса страницы: ** всегда ** перед возвратом javascript – George

ответ

1

Проблема является результатом двух вещей:

  1. Вы не заканчивается ваши заявления JS точкой с запятой.
  2. PHP eats up one newline character if it follows the closing tag?>.

Это означает, что ваш код JS заканчивает тем, что что-то вроде

var var1 = 16var var2 = 24var3 = 31 

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

Правильное решение прекратить каждое утверждение точкой с запятой:

var var1 = <?php echo $var1; ?>; 
var var2 = <?php echo $var2; ?>; 
var var3 = <?php echo $var3; ?>; 

Что бы также работа (хотя я рекомендую, чтобы избежать его), чтобы поставить некоторые дополнительные символы новой строки после каждого задания, и пусть ASI взять над:

var var1 = <?php echo $var1; ?> 

var var2 = <?php echo $var2; ?> 

var var3 = <?php echo $var3; ?> 

Как и в сторону, прямо echo переменных работает в этом случае, потому что они являются цифровыми. В общем, правильный способ передачи переменных в JS через json_encode:

var var1 = <?php echo json_encode($var1); ?>; 
+0

, это решает проблему как использование json_encode для вывода переменной, даже если у нее есть пробелы, спасибо за это – DevfaR

+0

@DevfaR: Но ваши переменные примера не содержат пробелов. Зачем? – Jon

0

попробовать это: Он работал для меня

<?php 

$var1 = 16; 
$var2 = 24; 
$var3 = 31; 

?> 
<script> 
var var1 = <?php echo $var1; ?>; 
var var2 = <?php echo $var2; ?>; 
var var3 = <?php echo $var3; ?>; 

alert(var1+"-"+var2+"-"+var3); 
console.log(var1+"-"+var2+"-"+var3); 
</script> 
+0

ну, это та же самая проблема, с которой я сталкиваюсь – DevfaR

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