如何从php脚本中获取JSON

时间:2013-05-08 17:03:15

标签: javascript json google-maps

我可以使用以下方式在Google地图上绘制点列表:

(function() {

    window.onload = function() {

        var map = new google.maps.Map(document.getElementById("map"), {
          center: new google.maps.LatLng(41.6, -0.88),
          zoom: 12,
          mapTypeId: google.maps.MapTypeId.ROADMAP
        });


        // Creating the JSON data

         var json = [
                {
            "nombre": "NAME1",
            "lat": "41.653",
            "long": "-0.907922",

        },
        {
            "nombre": "NAME2",
            "lat": "41.6693",
            "long": "-0.891317",

        },

        {
            "nombre": "NAME3",
            "lat": "41.6502",
            "long": "-0.875212",
        }
    ];


        var infoWindow = new google.maps.InfoWindow();

        for (var i = 0, length = json.length; i < length; i++) {
            var data = json[i],
                latLng = new google.maps.LatLng(data.lat, data.long);

            // Creating a marker and putting it on the map
            //var iconBase = 'https://dea-srl.net/domenico/traking/js/';
            var iconBase = 'https://maps.google.com/mapfiles/kml/shapes/';
            var marker = new google.maps.Marker({
                position: latLng,
                map: map,
                title: data.nombre,
                icon: iconBase + 'schools_maps.png'
                });

            (function(marker, data) {

                // Attaching a click event to the current marker
                google.maps.event.addListener(marker, "click", function(e) {
                    infoWindow.setContent(data.nombre);
                    infoWindow.open(map, marker);
                });

            })(marker, data);
        }
    }

})();

它运行良好,但我需要从生成的json字符串格式中读取我的位置,如下所示:

{
    "locations": [
        {
            "nombre": "Name1",
            "lat": "41.6504",
            "long": "-0.879137",

        },
        {
            "nombre": "NAME2",
            "lat": "41.6405",
            "long": "-0.893266",

        }    
 ]
}

这个Json是从php脚本生成的,可以通过以下网址获得:http://myscript.php

我的问题是,如何从php脚本中获取JSON并将其放入JavaScript变量?

3 个答案:

答案 0 :(得分:0)

对象具有相同的结构。

json.lengthjson[i]的位置,分别使用yourvariable.locations.lengthyourvariable.locations[i]

答案 1 :(得分:0)

您可以自己构建变量。

var json = [];

$.each(yourvariable.locations[0], function(index, value) {

var step = {
   nombre : value.nombre,
   lat : value.lat,
   lon : value.long
}
json.push(step);

});

答案 2 :(得分:0)

你从myscript.php得到的只是一个字符串。您需要将其转换为JavaScript对象

有很多方法可以做到这一点

1.<script> var json = <?php echo $JSON; ?></script>

OR

2. var json = JSON.parse("<?php echo $JSON;?>");

OR 您也可以考虑更改myscript.php以回显类似这样的内容

Var json = "$JSON_from_php";

并将其添加到dom,

<script src="myscript.php" async="async"></script>

OR 你可以通过ajax

获取它
$.get("myscript.php",function(json) {
    //json will contain the data.
});

在地图生成器中使用json.locations