我在尝试从每个循环中将数据传递给函数时遇到问题。我在下面大致粘贴了我的代码。基本上functionA获取JSON数据,将响应传递给functionB。我想将每个响应项传递给functionC,以便可以将它们添加到数组中以使用谷歌地图绘制标记。任何帮助,将不胜感激。感谢
if(app == undefined) var app = {};
app.Application = function() {
this.functionA = function(){
var self = this;
var urlHash = location.hash;
accessToken = urlHash.split('=')[1];
if (!accessToken) {
return false;
} else {
$.getJSON(instaAPIuri+"users/" + id + "/media/recent?access_token=" + accessToken + "&callback=?", self.functionB);
};
};
this.functionB = function(response){
var self = this;
//Error codes
if (response.meta.code == 400) {
alert(response.meta.error_message);
}
//Create picture elements with basic information and image
$.each(response.data, function (i, item) {
//If item.location == null, while trying to get geolocation = error
if (item.location != null) {
functionC( item.location.latitude, item.location.longitude, item.images.thumbnail.url, item.user.username);
}
});
};
this.functionC = function(latitude, longitude, imgurl, user) {
var self = this;
var latLngPosition = new google.maps.LatLng(latitude, longitude);
//Create marker with custom assets
marker = new google.maps.Marker({
position:latLngPosition,
icon: new google.maps.MarkerImage(imgurl,
new google.maps.Size(110, 110),
new google.maps.Point(0,0),
new google.maps.Point(32, 32)),
title: user,
map:map
});
//Push in array to delete later
markersArray.push(marker);
};
this.init();
};
$(function() {
var app = new app.Application();
});
答案 0 :(得分:1)
使用$ .ajax()设置对象的上下文调用functionB。您可以使用$ .proxy()将上下文更改为app.Application:
if(app == undefined) var app = {};
app.Application = function() {
this.functionA = function(){
var self = this;
var urlHash = location.hash;
accessToken = urlHash.split('=')[1];
if (!accessToken) {
return false;
} else {
$.getJSON(instaAPIuri+"users/" + id + "/media/recent?access_token=" + accessToken + "&callback=?", $.proxy(self.functionB, self));
};
};
this.functionB = function(response){
var self = this;
//Error codes
if (response.meta.code == 400) {
alert(response.meta.error_message);
}
//Create picture elements with basic information and image
$.each(response.data, function (i, item) {
//If item.location == null, while trying to get geolocation = error
if (item.location != null) {
self.functionC( item.location.latitude, item.location.longitude, item.images.thumbnail.url, item.user.username);
}
});
};
this.functionC = function(latitude, longitude, imgurl, user) {
var self = this;
var latLngPosition = new google.maps.LatLng(latitude, longitude);
//Create marker with custom assets
marker = new google.maps.Marker({
position:latLngPosition,
icon: new google.maps.MarkerImage(imgurl,
new google.maps.Size(110, 110),
new google.maps.Point(0,0),
new google.maps.Point(32, 32)),
title: user,
map:map
});
//Push in array to delete later
markersArray.push(marker);
};
this.init();
};
$(function() {
var app = new app.Application();
});