несколько записей из csv-файлов в java script

#php #javascript

#php #javascript

Вопрос:

  var marker = new google.maps.Marker({
    position: myLatlng, 
    map: map,
    title:"Hello World!"
});

        <?php 
    $fd = fopen ("landmarks.csv", "r");
    echo "var latlngarr=new Array();";
    $i=0;
    echo "var markerarr=new Array();";

    while (!feof ($fd)) {
        $buffer = fgetcsv($fd, 4096); 

        echo "var latlngarr[$i] = new google.maps.LatLng($buffer[2],$buffer[3]);";
        echo "var markerarr[$i] = new google.maps.Marker({
            position: latlngarr[$i], 
            map: map,
            title:$buffer[1]";
        });
        $i  ;
    }
    fclose ($fd);
    ?>
  

Я хочу создать несколько маркеров на картах Google .. первая запись работает…но другие записи из csv-файла не работают? Есть ли что-то неправильное в смешанном коде php и Javscript?

Комментарии:

1. Не уверен, что это может вам помочь, но SitePoint подготовил руководство о том, как заставить Google Maps извлекать местоположения для маркеров из XML-файла с помощью AJAX — blogs.sitepoint.com/google-maps-api-jquery . Если вы планируете просматривать большое количество маркеров или использовать базу данных для хранения их сведений (в этом случае другой PHP-скрипт мог бы сгенерировать необходимый XML для динамического доступа к этим данным), возможно, стоит взглянуть.

Ответ №1:

Добавьте кавычки вокруг строк и исправьте отсутствующие }

 var marker = new google.maps.Marker({
position: myLatlng, 
map: map,
title:"Hello World!"
});

<?php 
$fd = fopen ("landmarks.csv", "r");
echo "var latlngarr=new Array();";
$i=0;
echo "var markerarr=new Array();";

while (!feof ($fd)) {
    $buffer = fgetcsv($fd, 4096); 
?>
    latlngarr[<?= $i ?>] = new google.maps.LatLng(<?= $buffer[2] ?>, <?= $buffer[3] ?>);
    markerarr[<?= $i ?>] = new google.maps.Marker({
        position: latlngarr[<?= $i   ?>], 
        map: map,
        title: '<?= $buffer[1] ?>'
    });
<?php
}
fclose ($fd);
?>
  

Ответ №2:

Я предполагаю, что, возможно, данные, поступающие из файла CSV, неправильно заключены в кавычки, особенно title атрибут. При динамической сборке Javascript из PHP вы всегда должны использовать json_encode():

 $b2 = json_encode($buffer[2]);
$b3 = json_encode($buffer[3]);
$title = json_encode($buffer[1]);
echo "var latlngarr[$i] = new google.maps.LatLng($b2,$b3);";
echo "var markerarr[$i] = new google.maps.Marker({
     position: latlngarr[$i], 
     map: map,
     title: $title";
});
  

использование json_encode гарантирует, что все, что находится в этих переменных PHP, будет переведено в синтаксически корректный Javascript.

Комментарии:

1. Я пробовал это, но, к сожалению, это, похоже, не проблема.

2. Проверьте вашу консоль javascript на наличие других ошибок. это shift-ctrl-J в Firefox.