在JS文件中使用PHP中的数组

时间:2013-05-15 19:48:36

标签: php javascript ajax json

我的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 个答案:

答案 0 :(得分: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
            }
        }
    })

答案 1 :(得分:0)

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

echo '<script>var myarray = '.json_encode($LocationArray).'</script>';

答案 2 :(得分: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]);
        }
    }
});

答案 3 :(得分: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>"

尚未经过调试或测试,但它应该给你一个想法。