【问题标题】:Passing PHP Array into Javascript将 PHP 数组传递给 Javascript
【发布时间】:2012-06-26 13:28:27
【问题描述】:

我在 PHP 中有一个如下所示的数组

array(
    (int) 0 => array(
        'id' => '1',
        'name' => 'Mink7',
        'about' => 'Creative Design agency',
        'logo' => null,
        'lat' => '13.004870000000',
        'lng' => '77.576686084656'
    ),
    (int) 1 => array(
        'id' => '2',
        'name' => 'Bakasura',
        'about' => 'Live 2 Eat',
        'logo' => null,
        'lat' => '13.005643569006',
        'lng' => '77.577485382942'
    )
)

我做了什么。 我在 Header 中加载了 Function 并在 body 标记中写了以下内容。

<script type="text/javascript">
$(document).ready(function(){
        var startups = <?php echo json_encode($startups); ?>;
        $.each(startups, function(key, val) {
            markMe(val.lat, val.lng, val.name, val.description, val.logo);
        });
});
</script>

我收到以下错误

markMe 没有定义

markMe(val.lat, val.lng, val.name, val.description, val.logo);

附加到 HEAD 的 Javascript 文件。

// JavaScript Document
$(document).ready(function () {
    var map = new GMaps({
        div: '#map',
        lat: 13.00487,
        lng: 77.576729,
        zoom: 13,
    });

    /*
    GMaps.geolocate({
        success: function (position) {
            map.setCenter(position.coords.latitude, position.coords.longitude);
        },
        error: function (error) {
            alert('Geolocation failed: ' + error.message);
        },
        not_supported: function () {
            alert("Your browser does not support geolocation");
        },
        always: function () {
            //alert("Done!");
        }
    });
    */

    map.addControl({
        position: 'top_right',
        text: 'Geolocate',
        style: {
            margin: '5px',
            padding: '1px 6px',
            border: 'solid 1px #717B87',
            background: '#fff'
        },
        events: {
            click: function () {
                GMaps.geolocate({
                    success: function (position) {
                        map.setCenter(position.coords.latitude, position.coords.longitude);
                    },
                    error: function (error) {
                        alert('Geolocation failed: ' + error.message);
                    },
                    not_supported: function () {
                        alert("Your browser does not support geolocation");
                    }
                });
            }
        }
    });

    map.addMarker({
        lat: 13.00487,
        lng: 77.576729,
        title: 'Lima',
        icon: "http://i.imgur.com/3YJ8z.png",
        infoWindow: {
          content: '<p>HTML Content</p>'
        }
    });

    function markMe(lat, lng, name, description, logo){
        map.addMarker({
            lat: lat,
            lng: lng,
            title: name,
            icon: "http://i.imgur.com/3YJ8z.png",
            infoWindow: {
              content: description
            }
        });
    }

});

【问题讨论】:

    标签: php jquery google-maps-api-3


    【解决方案1】:

    在 PHP 中查找 json_encode,并在 JavaScript 中使用 JSON.parse(如果您需要广泛的浏览器支持,则使用类似 jQuery.parseJSON 的库)

    --更新后

    而不是 function markMe(lat, lng, name, description, logo){

    做: markMe = 函数(lat、lng、名称、描述、标志){

    这是因为在函数中声明的函数在该函数之外不可用

    【讨论】:

    • 是的,我尝试了该方法.. 但我收到以下错误 markMe is not defined markMe(val.lat, val.lng, val.name, val.description, val.logo);
    【解决方案2】:

    在回答 id 之前,我想指出我正在做一些假设。

    1. 我假设上面的数组在php中
    2. 我假设下面的函数是javascript

    如果是这种情况,您只需将数组引用放入 javascript 函数中即可。

    我猜测您的数据映射,我建议更好的方法是通过 php 构建整个函数并通过方法调用将其输出到屏幕,以使代码更易于阅读/理解

    但是,通过猜测您的映射并在创建方法调用之前测试代码是否有效,我将使用类似这样的东西作为第一个 stab 运行。

    <script type="text/javascript">
    <?php
     foreach($array as $point)
     {
    ?>
     {
     map.addMarker({
      lat: <?php print $point["lat"]; ?>,
      lng: <?php print $point["lng"]; ?>,
      title: <?php print $point["name"]; ?>,
         icon: <?php if(!is_null($point["logo"]){ print $point["logo"];} ?>,
         infoWindow: {
           content: <?php print $point["about"]; ?>
         }
     });
     <?php } ?>
    </script>
    

    谢谢

    尼古拉斯

    【讨论】:

    • 使用 $.each 函数我能够进行迭代。但它说功能缺失
    • 抱歉,我的答案是在编辑问题之前给出的,您在进行 JSON 调用时并不明显。
    • 我还没有进行 json 调用。我正在将数组转换为 json 并将其分配给变量
    • 是php还是js中的top数组?
    • PHP .. 下一步我是 json_encoding。编辑了我的问题以显示清晰
    猜你喜欢
    • 2011-05-16
    • 1970-01-01
    • 1970-01-01
    • 2014-06-11
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多