facebook javascript API 中的分页如何工作? [英] How does paging in facebook javascript API work?
问题描述
我正在尝试使用 javascript sdk 在我的 facebook 新闻提要中恢复上周的帖子.我能够获得第一页,但是,我不知道如何继续遍历其他页面.我已经用下面的代码试过了:
$('#loadPosts').bind('click', function() {FB.api('/me/home',{since:'last week'}, getPosts);});getPosts = 函数(响应){for(response.data 中的元素){post = response.data[元素]控制台日志(后);}previousPage = response.paging.previous;控制台日志(上一页);//我可以调用 FB.api(previousPage, getPosts);??}
但是我得到一个 URL 作为上一页,我不知道如何从该 URL 进行 javascript FB.api 调用.有什么想法吗?
好吧,对于一个简单的问题似乎有很多抱怨,我仍然相信我的旧答案可以澄清.无论如何,让我照顾你.:)
First:我发现您无法真正从第一页转到上一个"页面.理想情况下,我应该.所以,这是我提交的一个错误,你可能想要关注:https://developers.facebook.com/错误/391562790938294?browse=search_50fcac3ce094e7068176315
第二:如果这是故意的,你不能从第一页回到上一个"(因为没有上一个没有),但你肯定可以去到下一步".但是,由于 API 表现为光标,并且您已经向前移动,现在您的上一个"页面可以工作了.
问题的答案:
我得到一个 URL 作为上一页,但我不知道如何从该 URL 进行 javascript FB.api 调用.有什么想法吗?
是的,您可以进行 FB.api 调用.但我建议您改为进行 HTTP GET 调用,因为它更容易.另外,请注意,previous 可能会返回空数组,如 {"data":[]}
如何获取上一页/下一页?
在这里,我正在编写一个使用 jQuery 的小代码.如果您不想阅读代码,有两种方法:
- 使用上一个/下一个 URL 并发出 HTTP GET 请求.如果不为空,将带有下一组上一个"、下一个"链接.
- 解析 URL,并以 JSON 形式获取查询字符串并将其传递给
FB.api
.我使用 jQuery BBQ 插件解析.
重要说明:在示例中,我使用下一个"URL,因为在第一个请求中,如果我使用上一个",它会给出空的 JSON,而不是给出过去的帖子.但是,一旦我向前移动了几页,我就可以使用上一个"URL.与 Google 结果一样,您不能在第 1 页上转到上一页,但可以从任何 > 1 页(参见下面的示例 3).这称为分页.
示例 1:使用 HTTP GET 的代码(首选):(我将加载 3 个帖子/页面并查看下三个页面)
<头><script type="text/javascript" src="http://ajax.googleapis.com/ajax/libs/jquery/1.8/jquery.min.js"></script><script type="text/javascript" src="http://connect.facebook.net/en_US/all.js"></script><script type="text/javascript" src="https://raw.github.com/cowboy/jquery-bbq/master/jquery.ba-bbq.min.js"></script><脚本>变量 i = 0;var getPosts = 函数(响应){for(response.data 中的元素){post = response.data[元素]console.log(post.id + ": " +post.message);}//我可以调用 FB.api(nextPage, getPosts);??如果(我< 2){nextPage = response.paging.next;控制台日志(下一页);我++;//方法一:我用.$.get(nextPage, getPosts, "json");//可选:可以使用 $.getJSON 代替}}$(document).ready(function(){$('#loadPosts').bind('click', function() {FB.api('/me/home',{since:'yesterday','limit': '3'}, getPosts);});})头部><身体><div id="fb-root"></div><脚本>window.fbAsyncInit = function() {//初始化FB JS SDKFB.init({appId : 'XXXXXXXXXXXX',//在此填写您的应用 ID!status : true,//在初始化时检查登录状态?cookie : true,//设置会话 cookie 以允许您的服务器访问会话?});//添加事件监听器等额外的初始化代码放在这里};<button id="loadPosts">加载帖子</button><p>请打开开发者控制台看看发生了什么.在 Firefox 中,您可以使用 ctrl+shift+k,在 Chrome/Chromium 中使用 ctrl+shift+i</p>