javascript中来自csv文件的多个条目

时间:2011-05-16 17:01:06

标签: 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);
    ?>

我想在谷歌地图中创建多个标记......第一个条目有效...但其他的,来自csv文件不起作用?混合的php和Javscript代码有什么问题吗?

2 个答案:

答案 0 :(得分:0)

我猜测可能没有正确引用CSV文件中出现的数据,尤其是title属性。从PHP动态构建Javascript时,应始终使用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 :(得分:0)

在字符串周围添加引号并修复丢失的}

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);
?>