用JavaScript访问数组中的元素(从PHP返回的数组)

时间:2017-05-03 01:08:46

标签: javascript php jquery arrays google-maps

我目前正在开发一个项目,该项目在JQuery调用中从Google Maps API中提取数据,在PHP中处理它,然后最终在地图中显示结果。我现在能够将API调用中的元素转换为数组并将数组发回,但我不确定如何再次访问JavaScript中的特定数组。作为参考,第一个子阵列是搜索位置的经度和纬度,其余子阵列是搜索位置周围的目的地的经度,纬度和名称。我想知道你们中是否有人知道如何访问这些元素(或者可能以不同的方式以更易于访问的方式从PHP发回它们)。我的javascript调用是:

    function getPlace() {
    var address1 = $("#address1").val();
    var city1 = $("#city1").val();
    var state1 = $("#state1").val();
    var type = $("#placesList").val();
    var lat; var long;
     $.ajax({
        url: 'findPlace.php',
        type: 'GET',
        data: {address1: address1, city1: city1, state1: state1, type: type},
        success: function(stuff) {
            var info = JSON.parse(stuff);
            lat = info.lat;
            long = info[0].long;
            var name = info.first();
        },
        error: function(e) {
            console.log(e.message);
        } 
    });
}

我的PHP代码(findPlace.php)是这样的:

 <?php
$type = $_GET["type"];
$address1 = $_GET["address1"];
$city1 = $_GET["city1"];
$state1 = $_GET["state1"];

$key = "AIzaSyBubKVVsy-AjrJoS57GWMskC8vkr3xsj0g";

// Find the location
$niceStreet = str_replace(" ", "+", $address1);
$niceCity = str_replace(" ","+", $city1);
$niceState = str_replace(" ","+", $state1);
$address = $niceStreet.",+".$niceCity.",+".$niceState;

$jsonURL = "https://maps.googleapis.com/maps/api/geocode/json?address=".$address."&key=".$key;
$json = file_get_contents($jsonURL);
$decodedJSON = json_decode($json, true);

$lat = $decodedJSON["results"][0]["geometry"]["location"]["lat"];
$long = $decodedJSON["results"][0]["geometry"]["location"]["lng"];


// Find the places
$placeURL = "https://maps.googleapis.com/maps/api/place/nearbysearch/json?location=".$lat.",".$long."&radius=1000&type=".$type."&key=".$key;
$placeJSON = file_get_contents($placeURL);

$decodedPlace = json_decode($placeJSON, true);

$place = $decodedPlace["results"][0]["name"];
$size = count($decodedPlace["results"]);

$results[0]["lat"] = $lat;
$results[0]["long"] = $long;
for($i = 1; $i < 6; $i++){
    $c = $i - 1;
    $results[$i]["lat"] = $decodedPlace["results"][$c]["geometry"]["location"]["lat"];
    $results[$i]["long"] = $decodedPlace["results"][$c]["geometry"]["location"]["lng"];
    $results[$i]["name"] = $decodedPlace["results"][$c]["name"];
}

echo json_encode($results);

正如您所看到的,我正在尝试访问几个不同数组中的不同变量,但它们都返回PHP返回的整个数组,而不是值本身。谢谢你的帮助!

1 个答案:

答案 0 :(得分:0)

从时间戳中可以看出,我很快找到了这个问题的答案。我刚刚使用var name = info[1]["name"];之类的代码访问过它,之前我使用过这种方法,但我想我只是语法错误。