Проблема является результатом двух вещей:
- Вы не заканчивается ваши заявления JS точкой с запятой.
- 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); ?>;
* я даже положить 'window.onload' функцию, чтобы убедиться, чтобы загрузить PHP и HTML первый перед скриптом * <- это. это EPIC. –
Если вы просматриваете источник страницы, выполните те же (1-2-3) значения в части 'var var1 = etc..' кода? – Novocaine
* ', чтобы загрузить php и html сначала перед скриптом * - PHP выполняется на сервере, после запроса страницы: ** всегда ** перед возвратом javascript – George