0

我试图提取 formatted_address 属性失败。

以下 Web 服务将以下 JSON 记录到控制台。我无法使用returnedData.d.results[0].formatted_address.

 $.ajax({
        type: "POST",
        url: "ReportIncident.aspx/ReverseGeocode",
        data: "{latitude:" + latitude + ",longitude:" + longitude + "}",
        contentType: "application/json; charset=utf-8",
        dataType: "json",
        success: function (returnedData)
        {
          console.log(returnedData);
        }
    });

json 的格式与Google的格式完全相同。

编辑 达林指出我自相矛盾:网络服务将上面链接中的所有内容都包含在广告对象中,我没有提到这一点。

在此处输入图像描述

进一步编辑 这里是网络服务:

[WebMethod]
        public static string ReverseGeocode(decimal latitude, decimal longitude)
        {
            // Create the web request  

            string url = "http://maps.googleapis.com/maps/api/geocode/json?latlng=" + latitude + "," + longitude +"&sensor=true";
            HttpWebRequest request = WebRequest.Create(url) as HttpWebRequest;

            // Get response  
            using (HttpWebResponse response = request.GetResponse() as HttpWebResponse)
            {
                // Get the response stream  
                StreamReader reader = new StreamReader(response.GetResponseStream());

                return reader.ReadToEnd();
            }
        }

这是javascript:

/Gets the current location of the user
function getLocation()
{
    if (navigator.geolocation)
    {
        navigator.geolocation.getCurrentPosition(showPosition);
    }

}

function showPosition(position)
{
    var latitude = position.coords.latitude;
    var longitude = position.coords.longitude;

    $.ajax({
        type: "POST",
        url: "ReportIncident.aspx/ReverseGeocode",
        data: "{latitude:" + latitude + ",longitude:" + longitude + "}",
        contentType: "application/json; charset=utf-8",
        dataType: "json",
        success: function (returnedData)
        {
            alert(returnedData.d[0].results[0].formatted_address);
            console.log(returnedData);
        }
    });
4

3 回答 3

1

您是否尝试过returnedData.results[0].formatted_address在没有.d.节点的情况下使用。那是不存在的!

于 2012-06-28T13:33:26.473 回答
0

删除“.d”

returnedData.results[0].formatted_address

但是这样做你总是只得到第一个节点

于 2012-06-28T13:35:44.427 回答
0

这个问题的答案原来是 Web 服务返回一个字符串,而不是 json。内置的 javascript 序列化程序没有被使用。需要使用 eval 关键字或更安全的东西。碰巧我最终使用了 Google Maps Javascript API,而且这更容易。

于 2012-07-05T09:49:06.890 回答