[英]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.