Я использую API графа Facebook, чтобы получить список друзей пользователя и создать сообщение о статусе на основе шаблона и случайных друзей.Если я использую alert(response.data[0].name);
вместо return(response);
, мой код работает, и я вижу имя первого друга на Facebook.Когда я продолжаю в своем коде, он выдает ошибку как неопределенную.Основываясь на нескольких часах попыток решить проблему, я думаю, что у меня есть какая-то проблема с областью действия, которая не позволяет мне больше использовать ответ, или проблема с форматированием JSON.Я также попытался поиграть с JSON-анализом jQuery, но там не получил ничего дополнительного.
shuffle = function(v){
for(var j, x, i = v.length; i; j = parseInt(Math.random() * i), x = v[--i], v[i] = v[j], v[j] = x);
return v;
};
function getFriends() {
FB.login(function(response) {
if (response.session && response.perms) {
FB.api('/me/friends', function(response) {
return response;
});
}
} , {perms:'publish_stream'});
};
function selectFriend(){
var friends = getFriends();
friends = friends.data[0];
var findex = friends.length
var randomNumber = (Math.floor( Math.random() * 10 ) % findex);
return(friends[randomNumber].name);
};
function process(status){
status = status[0].toString();
var cindex = status.indexOf("{{friend}}");
while (cindex != -1){
status = status.replace("{{friend}}",selectFriend());
cindex = status.indexOf("{{friend}}");
}
return(status);
};
function newStatus(){
var status = [
"This status is named {{friend}}",
"This status loves {{friend}} but likes {{friend}} too.",
"This status goes by {{friend}} but you can call it {{friend}} if you like.",
"This status hates {{friend}}"
];
status = shuffle(status);
$('#status').text(process(status));
}
Код начинается с вызова newStatus () при щелчке.Вот как я реорганизовал свой код для работы после ответа jfriend00:
shuffle = function(v){
for(var j, x, i = v.length; i; j = parseInt(Math.random() * i), x = v[--i], v[i] = v[j], v[j] = x);
return v;
};
function newStatus(){
var status = [
"This status is named {{friend}}",
"This status loves {{friend}} but likes {{friend}} too.",
"This status goes by {{friend}} but you can call it {{friend}} if you like.",
"This status hates {{friend}}"
];
status = shuffle(status);
status = status[0].toString();
FB.login(function(response) {
if (response.session && response.perms) {
FB.api('/me/friends', function(response) {
var friends = response.data;
var findex = friends.length
var cindex = status.indexOf("{{friend}}");
while (cindex != -1){
var randomNumber = (Math.floor( Math.random() * 10 ) % findex);
var name = friends[randomNumber].name;
status = status.replace("{{friend}}",name);
cindex = status.indexOf("{{friend}}");
}
$('#status').text(status);
});
}
} , {perms:'publish_stream'});
}