我想在javascript变量locations
的指定方法之外访问它。
Javascript代码:
$(document).ready(function() {
var locations;
console.log('document ready');
function initializeMap() {
$.ajax({url: "getlocation.php",
success: function(result){
locations = $.parseJSON(result);
alert(locations);
}
});
var map = new google.maps.Map(document.getElementById('map_canvas'), {
zoom: 10,
center: new google.maps.LatLng(-33.92, 151.25),
mapTypeId: google.maps.MapTypeId.ROADMAP
});
var infowindow = new google.maps.InfoWindow();
var marker, i;
for (i = 0; i < locations.length; i++) {
marker = new google.maps.Marker({
position: new google.maps.LatLng(locations[i][1], locations[i][2]),
map: map
});
google.maps.event.addListener(marker, 'click', (function(marker, i) {
return function() {
infowindow.setContent(locations[i][0]);
infowindow.open(map, marker);
}
})(marker, i));
}
}
initializeMap();
});
我怎么能得到json解析的数据传递给位置变量,这样我就可以得到数据外其分配的方法和进入循环?
这是完成的代码,解决了我的问题:
$(document).ready(function() {
console.log('document ready');
function initializeMap() {
var locations;
$.ajax({url: "getlocation.php",
success: function(result){
alert(result);
locations = $.parseJSON(result);
alert(locations);
}
});
var map = new google.maps.Map(document.getElementById('map_canvas'), {
zoom: 10,
center: new google.maps.LatLng(-33.92, 151.25),
mapTypeId: google.maps.MapTypeId.ROADMAP
});
var infowindow = new google.maps.InfoWindow();
var marker, i;
for (i = 0; i < locations.length; i++) {
marker = new google.maps.Marker({
position: new google.maps.LatLng(locations[i][1], locations[i][2]),
map: map
});
google.maps.event.addListener(marker, 'click', (function(marker, i) {
return function() {
infowindow.setContent(locations[i][0]);
infowindow.open(map, marker);
}
})(marker, i));
}
}
initializeMap();
});
"按引用传递"one_answers"按值传递"是两个编程术语,描述了将变量传递给方法时方法的行为。
该函数在执行代码块后被调用,因此var location在被寻址后被赋值,这就是为什么您看到undefined。有两种方法可以解决这个问题,1)将代码块放入函数或2)初始化后直接调用函数!一般提示:不要使用ready函数,而是将脚本放在body标签结束之前,这样可以避免许多问题!