【问题标题】:Why this javascript is not returning the restaurant name?为什么这个 javascript 不返回餐厅名称?
【发布时间】:2015-03-28 05:52:55
【问题描述】:

地址查询

https://maps.googleapis.com/maps/api/place/textsearch/json?query=restaurant+in+kolkata&key=API_KEY

餐厅 JSON 列表

{
   "html_attributions" : [
      "Listings by \u003ca href=\"http://www.indiacom.com/\"\u003eIndiacom Yellow Pages\u003c/a\u003e"
   ],
   "next_page_token" : "CuQB2wAAALbNaxylA2QNB4pNRsjUxIOYwTSnii1OIwvXqiCPM3736kQZGJ4sEKthpVgvUkskg0ebaLbeE1iNbNKnO7N__X_FpsGprU3o4scQ5aZuUcroSkZVhuWOKvxWHA9IYVXhFmqrVsgG9mjinq-RvANuV6oKzcvnXK09GvdZR0Xp-HINbfoakOVR0TsoOFNCw4UIWrihFSXPJOXeNtTYuImUrPkYKZVt-Y8xMKxr_aOvRR7L0PfcAcXPpSBB2IugIh2K3ESUGMypJD8EuPW1rqqvvYXcMqqHp8iWzq9h1-ytSFl8EhDn2tzr7gU7AkcPORFyLXuiGhSG1bFqUIK2yQb6_fhN-nbym8c17Q",
   "results" : [
      {
         "formatted_address" : "No. 26,Next To Museum,Sudder Street, New Market Area, Jawaharlal Nehru Road, Kolkata, West Bengal 700016, India",
         "geometry" : {
            "location" : {
               "lat" : 22.558687,
               "lng" : 88.350889
            }
         },
         "icon" : "http://maps.gstatic.com/mapfiles/place_api/icons/restaurant-71.png",
         "id" : "68f2d647334cdaa6a4063c86347252f5a6ebe4c1",
         "name" : "Zaranj",
         "opening_hours" : {
            "open_now" : false,
            "weekday_text" : []
         },
         "place_id" : "ChIJ24Jtvqd3AjoRFb_Bd8Il8Cw",
         "rating" : 4.2,
         "reference" : "CmRZAAAA9-XMiEF-hYPFZh9kaOBwXQ6R-60XStrKsOEkThALaaeHHmJv6kvEd2JWCh7F9XU9XwyNaNRj6KZQkgGEvhhD8qTIs2fiH-Cng5kmlbIpuQLzQGFgQ8dgnvmL2U1-Uz3REhBb9bJSg-t8S8GDpGUGqlsSGhQnqUVV75IG_AFtVpeV4Xpg2YeTmA",
         "types" : [ "restaurant", "food", "establishment" ]
      },

JS

//Get Restaurant list
function getRestaurants()
{
    var search=$("#search").val();
    var prestring="restaurant+in+";

    var jsonRList="https://maps.googleapis.com/maps/api/place/textsearch/json?query="+prestring+search+"&key=API_KEY";
    alert(jsonRList);//returning the address correctly
    $.getJSON(jsonRList, function (data1) {
        var Rname=data1.results[0].name;
        alert(Rname);//returning nothing

    });
}

为什么这个 javascript 没有返回餐厅名称?(测试第一个结果[0])

这有什么问题?

alert(Rname);//什么都不返回

【问题讨论】:

  • 它对我来说是返回值。看起来对于那个特定的关键字你没有得到任何结果
  • 您是从外部页面获取的吗?我假设您正在尝试在检索该值之前对其进行警报。这是异步 javascript 的普遍问题,但我没有使用谷歌地图。
  • 确保重新调整数据没有任何错误。检查控制台选项卡并检查是否有任何错误。
  • 我正在使用 IBM WORKLIGHT,除了警报还有其他方法可以显示价值吗?在浏览器控制台上进行测试。
  • @jogesh_pi 在 IBM WORKLIGHT 上没有控制台错误

标签: javascript json


【解决方案1】:

我觉得你可以用console.log(),alert()或者document.write()只要信息反序列化,我用JSON.parse()反序列化,eval()是人们以前用的。 反序列化 意味着恢复以 json 编码的数据,以便 Javascript 可以将其用作对象。事实上,如果你使用 write.document(someJson) 你会看到 [object object] 意味着你已经准备好使用所有的数据,但你需要先JSON.parse()它。 JSON.stringnify() 与您想要做的相反,因为该功能是 serialize 数据然后传输它,然后接收器需要使用 JSON.parse() 将其反序列化并在 Javascript 中使用. 我喜欢使用write.document() 来查看信息,但是控制台日志可以让您更轻松地查看对象内部的内容。这里,一些代码示例:

// apiData would be the variable with the API information
var externalData = JSON.parse(apiData);

// will output [object object]     
document.write(externalData);

// will output  “     “
document.write('      ');

// will output the latitude
document.write(externalData.results[0].geometry.location.lat);

// will output in the console, you need to type externalData in the console log 
console.log(externalData);

我希望这会有所帮助。

为澄清起见,我使用此答案在其他论坛How to get geocode latitude and longitude from json google map api in variables by javascript? 中回答了类似问题

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-08-20
    • 2019-04-30
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-01-11
    相关资源
    最近更新 更多