Php 异步ajax调用会弄乱图像源
我正在使用D3.js和Facebook PHP SDK来显示访问者的朋友。每个朋友都显示在一个小div中,其中包含姓名和个人资料图片 我的问题是Facebook API没有返回到个人资料图片的直接链接。相反,您必须使用类似Php 异步ajax调用会弄乱图像源,php,jquery,facebook-graph-api,d3.js,Php,Jquery,Facebook Graph Api,D3.js,我正在使用D3.js和Facebook PHP SDK来显示访问者的朋友。每个朋友都显示在一个小div中,其中包含姓名和个人资料图片 我的问题是Facebook API没有返回到个人资料图片的直接链接。相反,您必须使用类似https://graph.facebook.com/UserID/picture?redirect=false,图片的URL以JSON格式返回。所有其他好友数据都已提取并存储在Javascript数组中 现在,我设置了一个AJAX调用来处理这个问题,但是由于它的异步特性,它不
https://graph.facebook.com/UserID/picture?redirect=false
,图片的URL以JSON格式返回。所有其他好友数据都已提取并存储在Javascript数组中
现在,我设置了一个AJAX调用来处理这个问题,但是由于它的异步特性,它不起作用。获取图片URL后,DOM就已经加载,图像也会得到
来自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;
Ajax是异步的,请求完成时会调用回调,请尝试以下方法:
function ajax(path, profile) {
$.ajax({
type: "GET",
url: "ajax.php",
data: {'path': path},
success: function(data) {
profile.append($('<img/>', {src: data, 'class': 'thumb'));
}
})
}
//d3
ajax(d.id, profile);
函数ajax(路径、配置文件){
$.ajax({
键入:“获取”,
url:“ajax.php”,
数据:{'path':path},
成功:功能(数据){
profile.append($('您将获得,因为ajax
不会返回任何内容。请将代码更改为:
function ajax(path, callback) {
$.ajax({
type: "GET",
url: "ajax.php",
data: {'path': path},
success: function(data) {
callback(data);
}
})
}
及
我明白你的意思了。问题是在D3回调函数之外,d.id
不可用。
var img = profile.append("img").attr("class", "thumb");
ajax(d.id, function(data) { img.attr("src", data); });