【问题标题】:Facebook FQLproblem with javascript sdkFacebook FQLproblem with javascript sdk
【发布时间】:2012-03-21 07:18:03
【问题描述】:
大家好,
我执行以下查询来获取用户状态:
FB.api(
{
method: 'fql.query',
query: 'SELECT message FROM statuses WHERE uid = ' + userId
},
function(data) {
// do something with the response
}
);
当结果数大于0时效果很好。
但是当没有结果时,回调函数根本没有被调用。
我想知道这个查询是否返回了 0 行,有什么办法吗?
谢谢:)
【问题讨论】:
标签:
facebook-graph-api
facebook-fql
facebook-javascript-sdk
facebook-apps
【解决方案1】:
首先,statuses 表不存在。您应该使用status 表。
回调总是被调用,但你应该正确地检查empty objects。只需将其粘贴到Javascript Test Console:
<fb:login-button scope="read_stream">
Grant access to statuses
</fb:login-button>
<button onclick="getStatuses()">Get Statuses</button>
<script>
window.getStatuses = function() {
FB.api(
{
method: 'fql.query',
query: 'SELECT message FROM status WHERE uid = me() AND time < 315532800'
},
function(data) {
if(!isEmpty(data)) {
for(var key in data) {
var obj = data[key];
console.log(obj['message'])
}
} else {
console.log("data is empty")
}
});
};
function isEmpty(obj) {
for(var prop in obj) {
if(obj.hasOwnProperty(prop))
return false;
}
return true;
}
</script>
这里我正在检查 1980 年 1 月 1 日之前的状态 以确保返回空结果。在您的控制台中,您应该注意 data is empty 响应。
【解决方案2】:
当查询没有结果时,您应该得到一个空数组。
此外,没有名为“statuses”的 FQL 表,它是“status”。