如何将json对象从一个函数传递给另一个函数?
问题描述:
我有一个jQuery的函数,通过php文件,从数据库中检索经度和纬度。在同一个js文件中,我有一个将标记放置在Google地图上的函数。我想使用第一个函数返回的json(lat和long),在Google maps中添加标记函数。目前在我的代码下面,..JSON数据只是显示在一个空的div。有什么方法可以在函数之间访问json数据,或者我可以以某种方式组合这两个函数吗?如何将json对象从一个函数传递给另一个函数?
// Google Map
var map;
// markers for map
var markers = [];
// initialize the map
function initMap() {
map = new google.maps.Map(document.getElementById('map'), {
center: {lat: 37.09024, lng: -95.712891},
mapTypeId: google.maps.MapTypeId.ROADMAP,
zoom: 4
});
}
// add markers
function addMarker(data) {
// get lat and long from data(json object)
var myLatlng = new google.maps.LatLng(parseFloat(data.latitude), parseFloat(data.longitude));
// custom marker image
//var image = "../img/infoblue.png";
// new marker
var marker = new MarkerWithLabel({
position: myLatlng,
map: map,
labelClass: "label",
labelContent: data.name,
labelAnchor: new google.maps.Point(20,0),
});
// add marker to array
markers.push(marker);
}
// this function gets json and then displays in a div on an html page
$(document).ready(function(){
$('.airport_form').submit(function(){
// show that something is loading
$('#response').html("<b>Loading response...</b>");
$.ajax({
type: "post",
dataType: "json",
url: "response.php",
data: $(this).serialize()
})
.done(function(data){
// show the response
$('#response').html("Name -> " + data.name + "<br>" + " Iata code -> " + data.iata + "<br>" + " Lat. -> " + data.latitude + "<br>" + " Longitude -> " + data.longitude);
})
.fail(function() {
// just in case posting the form fails
alert("Posting failed.");
});
// to prevent refreshing the whole page page
return false;
});
});
答
你可以添加你addMarker
功能,像这样你done
功能...
.done(function(data){
// add marker from data
addMarker(data);
// show the response
$('#response').html("Name -> " + data.name + "<br>" + " Iata code -> " + data.iata + "<br>" + " Lat. -> " + data.latitude + "<br>" + " Longitude -> " + data.longitude);
})
+0
谢谢..一旦你得到答案,答案总是如此简单! – Ronnie
一旦对象已经从有线格式JSON解析,它不是一个“JSON对象” - 这是一个普通的旧JavaScript对象。 – Pointy