Как передать массив из php в js?

156
01 декабря 2019, 00:20
<?
function console_log( $data ){
  echo '<script>';
  echo 'console.log('. json_encode( $data ) .')';
  echo '</script>';
}

function get_saved_locations(){
    $con=mysqli_connect ("localhost", 'root', '','locations');
    if (!$con) {
        die('Not connected : ' . mysqli_connect_error());
    }
    // update location with location_status if admin location_status.
    $sqldata = mysqli_query($con,"select lng,lat from locations ");
    $rows = array();
    while($r = mysqli_fetch_assoc($sqldata)) {
        $rows[] = $r;
        echo $r;
    }
    $indexed = array_map('array_values', $rows);
    //  $array = array_filter($indexed);
    echo json_encode($indexed);
    if (!$rows) {
        return null;
    }
}
?>
<!DOCTYPE html>
<html lang="en-US" xmlns="http://www.w3.org/1999/xhtml">
  <head profile="http://gmpg.org/xfn/11">
    <meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
    <link rel="stylesheet" type="text/css" href="http://cdn.leafletjs.com/leaflet/v0.7.7/leaflet.css" />
    <script type='text/javascript' src='http://ajax.googleapis.com/ajax/libs/jquery/2.0.3/jquery.min.js'></script>
    <script type='text/javascript' src='http://cdn.leafletjs.com/leaflet/v0.7.7/leaflet.js'></script>
  </head>
  <body>

    <div id="map" style="width: 800px; height: 440px; border: 1px solid #AAA;"></div>
    <script type='text/javascript' src='maps/markers.json'></script>
    <script>    

    var tempArray = JSON.parse(<?php echo json_encode("[[60,30], [60.01,30.01]]"); ?>);
    var map = L.map( 'map', {
      center: [57.08233,25.24116],
      minZoom: 0.5,
      zoom: 7
    })
    L.tileLayer( 'http://{s}.tile.openstreetmap.org/{z}/{x}/{y}.png', {
  attribution: '&copy; <a href="https://www.openstreetmap.org/copyright">OpenStreetMap</a>',
  subdomains: ['a', 'b', 'c']
  }).addTo( map )
L.marker( tempArray[0] ).addTo( map ); </script>
  </body>
</html>

мне нужно , чтоб появлялись точки на карте , использую строчку (ниже) то всё ок , а точек очень много и все хранятся в бд и я не могу результаты работы функции get_saved_locations() передать... помогите, пожалуйста , весь день вчера над этим сидел , всю ночь не спал.

    var tempArray = JSON.parse(<?php echo json_encode("[[60,30], [60.01,30.01]]"); ?>);
Answer 1

C учетом того, как у Вас устроена функция get_saved_locations, писать

<?php echo json_encode(get_saved_locations()); ?>

не правильно

echo это функция вывода текста

она уже используется внутри get_saved_locations как и json_encode

<? 
 
function get_saved_locations(){ 
    echo json_encode("[1,2,3,4,5,6]"); 
} 
 
?> 
 
 
<script>     
 
    var tempArray = JSON.parse(<?php get_saved_locations(); ?>); 
    console.log(tempArray) 
     
</script> 

php sandbox

READ ALSO
Не работает Gettext on Windows PHP

Не работает Gettext on Windows PHP

Суть проблемы в том, что выводится только исходная строчка, msgid "HELLO_WORLD" вместо строчки перевода msgstr "Hello World!!!"

113
проверка изображения на существование (PHP)

проверка изображения на существование (PHP)

как на PHP проверить существование изображение взятого с другого сайтаК примеру: Существует , Не существует

158
Как взять данные о видео из вк с помощью vk api?

Как взять данные о видео из вк с помощью vk api?

Дело заключается в том,что я беру данные из пабликов и там иногда проскакивают данные о видео с вк или youtube'aЭтими данными являются track_code,access_key...

151
php как узнать и вывести все файлы в папке

php как узнать и вывести все файлы в папке

В заголовке весь вопросЕсть известная директория site

145