我在获取评论者的个人资料图片时遇到问题,我需要将其与页面评论一起使用。
所以这是我的代码来显示页面的评论(我只使用8行结果)
<script type="text/javascript">
$(document).ready(function() {
$.ajaxSetup({ cache: true });
$.getScript('//connect.facebook.net/en_US/sdk.js', function(){
FB.init({
appId: '146098578760813',
version: 'v2.9' // or v2.1, v2.2, v2.3, ...
});
FB.api(
'/146098578760813',
'GET',
{"fields":"ratings",
"access_token":"EAACEdEose0cBAAHqbBtNJzh7vC0C9PnSuV9AX910AlAUTHaP8cZArkE9NXPQUZB01jFOZAhNMXXdd0yIxwgxJZAulCGoDNXzEsRB04sRHlZB7Rkh1SCuiMDIzRqnX0l4ZAQe0AtTOh2CZCRsHXk49eWTQi0K5rZCedu852wV4A7AjcbIZBHsZBL5GiUfKifitIwT0ZD"},
function(response) {
var div = document.getElementById('conReviews');
console.log(response.ratings.data[0]);
console.log(response.ratings.data[0].review_text);
var review=[];
var reviewer_name=[];
var reviewer_photo=[];
var reviewer_id=[];
for(var i=0; i<8; i++){
if(response.ratings.data[i].review_text!=null){
review[i]=response.ratings.data[i].review_text;
reviewer_name[i]=response.ratings.data[i].reviewer.name;
reviewer_id[i]=response.ratings.data[i].reviewer.id;
var c="asd";
FB.api(
'/'+response.ratings.data[i].reviewer.id+'/picture',
'GET',
{"type":"large","width":"200","height":"200"},
function(response2) {
c=response2.data.url;
}
);
reviewer_photo[i]=c;
console.log(review[i]);
console.log(reviewer_name[i]);
console.log(reviewer_photo[i]);
div.innerHTML=div.innerHTML+
' <div class="shortcode-tour-reviews__item">'+
'<div class="shortcode-tour-reviews__item__info" id="photo_'+reviewer_id[i]+'">'+
'<img alt="" class="avatar avatar-95 photo avatar-default" height="95" src="'+reviewer_photo[i]+'" srcset="'+reviewer_photo[i]+'" width="95"/>'+
'<div class="shortcode-tour-reviews__item__info__name">'+
'</div>'+
'</div>'+
'<div class="shortcode-tour-reviews__item__content">'+
'<h3 class="shortcode-tour-reviews__item__title">'+
'<a href="#/page/pages/view/page/17">'+
reviewer_name[i]+
'</a>'+
'</h3>'+
'<div class="shortcode-tour-reviews__item__description">'+
review[i]+
'</div>'+
'<div class="shortcode-tour-reviews__item__rating">'+
'</div>'+
'</div>'+
'</div>';
}
}
}
);
});
});
当我运行代码时,用户个人资料图片是 response2.data.url 值是正确的。它显示了评论者的个人资料图片的网址。我做了 console.log 以确保结果是正确的。
然后我想在 c 变量中存储图片网址的值,然后出现问题。
c 变量不会改变。它保持包含&#34; asd&#34; 值。
我试图在代码中添加警告,就像这样
var c="asd";
FB.api(
'/'+response.ratings.data[i].reviewer.id+'/picture',
'GET',
{"type":"large","width":"200","height":"200"},
function(response2) {
c=response2.data.url;
alert(c);
}
);
reviewer_photo[i]=c;
它显示了审阅者的正确网址图像。但同样, reviewer_photo [i] 继续显示asd而不是图片网址(在console.log中查看)
我试图在document.ready函数之外分离第二个FB.api调用并创建它的新函数然后在主FB.api调用中调用它,但它也没有用。
我该如何解决这个问题?谢谢你:)
P.S:我已经阅读了编辑回调的教程,但我似乎很难用我的案例实现回调,那么有人可以帮我展示我案例的最佳解决方案吗?谢谢:)