从FB Api JavaScript获取响应
get response from FB Api JavaScript
我尝试将函数return与facebookapi-requeust结合使用。
var g_ret = true;
function uploadImagesFbCounter(anz){
var gid='';
$("div[id ^= 'gallerydetail']").each(function (i) {
gid = this.id.split('-');
gid = parseInt(gid[1]);
})
if(gid==0) return true;
FB.api('/me', function(response) {
//console.log(response);
var uid = response.id;
if(!anz){
g_ret = $.ajax({
type: "POST",
async:false,
url: "api/gallerie_anz_speich.php",
data: "uid="+uid+"&op=get&gid="+gid
});
if(g_ret.response >= 20) {
g_ret = false;
}
} else {
g_ret = $.ajax({
type: "POST",
async:false,
url: "api/gallerie_anz_speich.php",
data: "uid="+uid+"&op=set&gid="+gid
});
//console.log(g_ret.response);
g_ret = '<span style="padding:0 5px;">Noch '+(20-g_ret.response)+'Fotos</span>';
console.log(g_ret);
}
});
return g_ret;
}
无论我做什么,我都会得到空洞的回应。。。。请帮忙!
您使用的API是异步。你不能像那样从函数中返回值;在这种情况下是不可能的。
相反,编写API,使其客户端向其传递一个可调用的函数。在Facebook API回调中,您可以调用该函数并向其传递"g_ret"字符串。
function uploadImagesFbCounter(anz, callback){
// ...
FB.api('/me', function(response) {
// ...
callback(g_ret);
});
}
然后当你调用你的函数时,而不是:
var result = uploadImagesFbCounter( whatever );
// ... do something with result ...
你可以这样做:
uploadImagesFbCounter( whatever, function( result ) {
// ... do something with result ...
});
从Facebook的服务器获取用户信息是异步的。这意味着,您在FB.api()
之后编写的任何代码都不会等待Facebook做出响应。您的浏览器并不是为了等待Facebook的服务器而被阻止的。这与AJAX是相同的概念,我相信您对AJAX很熟悉,因为我看到您在代码中使用了它。
从异步服务器请求"获取返回值"的常见方法是使用回调函数。
function uploadImagesFbCounter(anz, onSuccess){
var gid='';
$("div[id ^= 'gallerydetail']").each(function (i) {
gid = this.id.split('-');
gid = parseInt(gid[1]);
})
if(gid==0) return true;
FB.api('/me', function(response) {
//console.log(response);
var uid = response.id;
if(!anz){
g_ret = $.ajax({
type: "POST",
async:false,
url: "api/gallerie_anz_speich.php",
data: "uid="+uid+"&op=get&gid="+gid
});
if(g_ret.response >= 20) {
g_ret = false;
}
} else {
g_ret = $.ajax({
type: "POST",
async:false,
url: "api/gallerie_anz_speich.php",
data: "uid="+uid+"&op=set&gid="+gid
});
//console.log(g_ret.response);
g_ret = '<span style="padding:0 5px;">Noch '+(20-g_ret.response)+'Fotos</span>';
console.log(g_ret);
}
onSuccess(g_ret);
});
}
uploadImagesFbCounter(
whateverAnzIs,
function(g_ret) {
console.info(g_ret);
}
);
相关文章:
- Typescript angularjs$http获取响应类型(避免使用<any>)
- 在JavaScriptAjax调用中从web服务中的XMLDocument获取响应.
- 从http获取响应管理zip
- 如何从php页面获取响应
- 在主干提取完成后获取响应标头
- 在Java(Coffee)脚本中获取响应值
- Jquery ajax post禁用启用字段并获取响应
- 可以'无法使用Oauth2/BaseCamp API获取响应数据
- 正在从servlet获取响应.ExtJs
- 从代码点火器控制器发送电子邮件后,无法在 jquery 中获取响应
- 如何从 jQuery Get 获取响应标头位置
- 使用 Requests 库从 PhanomJS 服务器获取响应
- 有关在 $.get() 中获取响应的问题
- 如何使用XMLHttpRequest获取响应表单servlet
- 更改 URL 并使用 AJAX 获取响应加载新页面的最佳方法是什么
- 煎茶触摸获取响应标头
- 如何获取响应文本
- NodeJS&Socket.IO:发出请求事件并获取响应,我应该在何时/何地绑定侦听器
- 如何从 javascript 调用 url 并从 url 到 javascript 获取响应
- Jquery $.ajax 获取响应与将“this”对象嵌套传递到“success”回调函数冲突