繁体   English   中英

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

[英]using an array from PHP in a JS file

我的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中的数组,并将标记放置在我在自己网站上的google map上。

您期望有效的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
            }
        }
    })

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

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

理想情况下,您将使用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]);
        }
    }
});

我能想到的最简单的方法是在链接到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>"

那还没有经过调试或测试,但是应该可以给你这个想法。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM