我在这个非常小的问题上打了1.5个小时。 情况:文件A - >请求文件B,如果文件B返回true,则用户已注册,不需要添加到我们的数据库中。如果为false,则用户登录Facebook,但从未登录过 - >添加到数据库。
我的问题:由于异步调用,FB.api()阻止我的函数返回true。
function registered(){
FB.api('/me', function(response) {
$.ajax({
async: true,
url: "facebook-sdk/src/check.php",
type: "POST",
data: {id: response.id},
success: function(data) {
if(data=='true'){
return true;
}else{
return false;
}
}
});
});
}
我对函数的调用:
if(registered())
alert('true');
else
register();
答案 0 :(得分:1)
function registered(callback){ //pass callback function as parameter
FB.api('/me', function(response) {
$.ajax({
async: true,
url: "facebook-sdk/src/check.php",
type: "POST",
data: {id: response.id},
success: function(data) {
callback(data);
}
});
});
}
//call registered function
registered(function(response) { //callback function here
if(response) { //if true is returned
alert("Registered Already");
}
else {
your_register_function();
}
});