繁体   English   中英

如何在不调用变量的情况下访问此json数据?

[英]How do I access this json data without a variable to call?

如何使用此jquery脚本访问此json数据?

原始脚本使用JSON文件,其中所有数据都嵌套在“标记”下:我的JSON不是那样嵌套的。 所以我很难弄清楚如何正确访问它。

对此进行了修补并研究了其他示例,但是似乎其他人正在使用与原始文档更相似的JSON文件。

我的剧本:

<script type="text/javascript">
        $(function() {
                // Also works with: var yourStartLatLng = '59.3426606750, 18.0736160278';
$('#map_canvas').gmap().bind('init', function() { 
  // This URL won't work on your localhost, so you need to change it
  // see http://en.wikipedia.org/wiki/Same_origin_policy
  $.getJSON( 'http://localhost:3000/locations.json', function(data) { 
    $.each( data, function(marker) {
      $('#map_canvas').gmap('addMarker', { 
        'position': new google.maps.LatLng(marker.latitude, marker.longitude), 
        'bounds': true,
      }).click(function() {
        $('#map_canvas').gmap('openInfoWindow', { 'content': marker.content }, this);
      });
    });
  });
});
        });
</script>

我的JSON:

[
  {
    "id": 2,
    "address": "woo woo woo",
    "latitude": 10.6959353,
    "longitude": -61.13116189999999,
    "url": "locations/2.json"
  },
  {
    "id": 3,
    "address": "hi hi hi",
    "latitude": 20.784575,
    "longitude": -73.9488803,
    "url": "/locations/3.json"
  },
  {
    "id": 4,
    "address": "blah blah balh",
    "latitude": 50.70984199999999,
    "longitude": -72.958056,
    "url": "/locations/4.json"
  }
]

看来您的代码中有两个问题。 首先, $.each回调中的函数应接受两个参数,第一个是数组中当前元素的索引:

$.each( data, function(idx, marker) {

在这里, marker不是数据或数据结构中的现有属性或要求,而是数组中idx位置上对象的占位符名称。 例如,当idx=0 ,您会发现

marker === {
  "id": 2,
  "address": "woo woo woo",
  "latitude": 10.6959353,
  "longitude": -61.13116189999999,
  "url": "locations/2.json"
}

这指出了第二个问题,那就是您的JSON文件中的对象没有content属性,因此在单击功能marker.content中将是未定义的。

如果这还不足以帮助您解决问题,请提供更多有关您期望看到的行为,正在发生的事情,JavaScript控制台中可能出现的消息等更多信息。

更新:响应注释线程,除了最初缺少的代码外,完整的解决方案还包括不违反同源策略 浏览器必须从与包含脚本的页面相同的位置从浏览器加载要加载的JSON文件。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM