0

我的 index.php 中有一个由 foreach 创建的数组:

foreach ($events as $eventkey =>$event)
                {
                    echo "<li class='desktop-2 tablet-1 mobile-1'>".$event->title."<span class='eventLetter'>A</span><br/><span class='eventLocation'>".$event->city."</span></li>";
                    $LocationArray[]= $event->latlng;
                }

                json_encode($LocationArray);

现在我想在我的 javascript 中使用这个数组(它写在不同的文件中..)。但我可以这样做吗?如果是这样,如何?(我是 php 新手,我真的不擅长 AJAX 等。我一直在寻找这里和其他网站,但我真的找不到解决方案。)

计划是能够在我的 javascript 中循环遍历数组,并将标记放在我网站上的谷歌地图上。

4

4 回答 4

0

你期待一个有效的 json 输出对吗?

    <?php
    foreach ($events as $eventkey =>$event)
    {
    echo "<li class='desktop-2 tablet-1 mobile-1'>".$event->title."<span class='eventLetter'>A</span><br/><span class='eventLocation'>".$event->city."</span></li>";// remove this thing or maybe place it in a variable. do not echo it.
    $LocationArray[]= $event->latlng;
    }

    echo json_encode($LocationArray);

在你的剧本上

    $.ajax({
        url:"",
        success: function(data){
            var json = jQuery.parseJSON( data );

            for (var i = 0; i < json.length; i++) {
                alert(json[i]);
                //Do something
            }
        }
    })
于 2013-05-15T19:53:17.813 回答
0

最简单的解决方案是插入一个带有 javascript 变量的新脚本标记,然后使用json_encode将 php 数组分配给该变量。JSON(JavaScript Object Notation)是一种用于编程语言之间数据交换的文本格式。因为 JSON 是基于 JavaScript 的,所以客户端不需要解码。

echo '<script>var myarray = '.json_encode($LocationArray).'</script>';
于 2013-05-15T19:56:38.117 回答
0

理想情况下,您会使用 AJAX 并获取 json_encode($LocationArray) 的输出...

所以你的最后一行需要是

echo json_encode($LocationArray);

一旦这被发起 AJAX 调用的 JS 函数取回,您可以将其转换为数组并循环它。(期望您使用 jQuery,代码看起来像这样......)

$.ajax({
    url: 'index.php',
    success: function(response) {
        var resData = $.parseJSON(response);
        for (var i = 0; i < resData.length; i++)
        {
            alert(resData[i]);
        }
    }
});
于 2013-05-15T19:57:54.627 回答
0

我能想到的最简单的方法是在链接到 JS 文件之前进行回显。

echo"<script type='text/javascript'>\n var array={";
for($i=0;$i<sizeof($array);$i++){
     echo "'".$item."'";
     if($i<(sizeof($array)-1)){
         echo",";
     }
}
echo"};\n</script>"

那还没有经过调试或测试,但它应该给你的想法。

于 2013-05-15T19:58:22.817 回答