Я читаю данные из MySQL, используя PHP. Затем я пытаюсь передать эти данные в JS ниже в том же HTML, используя его на картах OpenLayer. Я пробовал различные методы, включая json_encode, но не могу передать действительные данные. Когда я устанавливаю данные вручную в JS, все работает нормально. Что я делаю не так с кодом? Есть ли предпочтительный метод?
<html lang = "en">
.карта { маржа: 0; заполнение: 0; высота: 100%; ширина: 100%; } Отслеживание пользователей OnTRack
<?php
// ... Other database code removed for example...
$rowlon = 151.215324;
$rowlat = -33.856733;
?>
<div id = "map" class = "map"></div>
<script type = "text/javascript">
// var latestlon = <?php echo $rowlon; ?>;
// var latestlat = <?php echo $rowlat; ?>;
var latestlon = "<?php echo json_encode($rowlon) ?>";
var latestlat = "<?php echo json_encode($rowlat) ?>";
// var latestlon = 151.215324;
// var latestlat = -33.856733;
var mycoords = [latestlon, latestlat];
var map = new ol.Map({
target: 'map',
layers: [
new ol.layer.Tile({
source: new ol.source.OSM()
})
],
view: new ol.View({
center: ol.proj.fromLonLat(mycoords),
zoom: 12
})
});
</script>
1. Удалите двойные кавычки при использовании эха, особенно если вы хотите сохранить тип переменной (модуль может ожидать числовой тип вместо строки) 2. Нет необходимости использовать json_encode, так как значение не в формате массива.



![Безумие обратных вызовов в javascript [JS]](https://i.imgur.com/WsjO6zJb.png)


var latestlon = <?=$rowlon?>;
var latestlat = <?=$rowlat?>;
Здесь не нужны двойные кавычки и особенно json_*
Если это не работает, возможно, вы делаете что-то другое неправильно, проверьте консоль браузера на наличие ошибок.
Не используйте короткие теги. Они не всегда поддерживаются.
Короткие открытые теги @Andreas всегда доступны, начиная с php5.4 (выпущено 7 лет назад): php.net/manual/en/ini.core.php#ini.short-open-тег
Все еще не работает... Код останавливается на этой строке и не переходит к отображению.
Люди все еще используют PHP 4. Буквально вчера я видел вопрос о PHP 4. А что можно отключить? Просто хочу, чтобы ваш ответ был полезен всем, а не только тем, у кого 5.4+ и с правильными настройками.
Ошибка консоли: «Uncaught SyntaxError: Unexpected token <» Это для любого из параметров, начинающихся с = <?
@ChrisKing проверьте исходный код своей страницы, у вас, вероятно, есть проблемы с данными, которые вы пытаетесь распечатать, поэтому вы получаете ошибку JS.
Это может быть связано со следующими причинами
Причина - 1
var latestlon = "<?php echo json_encode($rowlon) ?>"; // Type = String
var latestlat = "<?php echo json_encode($rowlat) ?>"; // Type = String
Измените переменную JS на номер тип, удалив двойные кавычки.
var latestlon = <?php echo json_encode($rowlon) ?>; // Type = Number
var latestlat = <?php echo json_encode($rowlat) ?>; // Type = Number
Причина - 2
Пожалуйста, проверьте, используете ли вы расширение файла php
к вашему сведению: нет необходимости использовать json_encode, поскольку значение не является массивом.
Надеюсь, это поможет.
Большое спасибо. Причина 1 и 2. Самое главное, я не знал, что файл должен иметь расширение PHP, даже если он имеет базовый HTML-код. Спасибо всем за вклад от других!
Почему вы используете json_encode? Это возвращает строковый объект, совсем не похожий на вашу прокомментированную строку ниже. Вы всегда можете просмотреть исходный код HTML и посмотреть, что делает ваш код.