私は D3.js を Facebook PHP SDK と組み合わせて使用して、訪問者の友達を表示しています。各友達は、名前とプロフィール写真とともに小さな div に表示されます。
私の問題は、Facebook API がプロフィール写真への直接リンクを返さないことです。代わりに、のような URL を使用する必要がありhttps://graph.facebook.com/UserID/picture?redirect=false
、画像への URL が JSON で返されます。他のすべてのフレンド データは既に取得され、Javascript 配列に格納されています。
ここで、これに対処するために AJAX 呼び出しを設定しましたが、非同期の性質のために機能しません。画像の URL が取得されると、DOM は既に読み込まれており、画像が取得されます<img src="undefined">
。
main.js から
function ajax(path) {
$.ajax({
type: "GET",
url: "ajax.php",
data: {'path': path},
success: function(data) {
return data; //returned data is correct
}
})
}
// d3 code
profile.append("img")
.attr("src", function(d) { return ajax(d.id); }) //this is "undefined"
.attr("class", "thumb");
ajax.php から
$path = file_get_contents('https://graph.facebook.com/' . $_GET['path'] . '/picture?redirect=false');
echo json_decode($path)->data->url;