2010-07-20 99 views
1

所以考虑看看这里的API文档页:Facebook FB.api - 只需使用它发回的JSON对象?

http://developers.facebook.com/docs/reference/javascript/FB.api

如果响应收回是一个HttpResponse或JSON对象我不知道。他们说他们在响应中返回一个JSON对象。

所以,因为他们正在执行的东西,如response.name等,这是否意味着我们不需要解析JSON对象?我不明白。我打算使用jQuery parseJSON解析返回的JSON对象,以便遍历它并获取数据。

更新:

玉以及这里是我的实际代码:

var uri = "/" + userID + "/albums"; 

    FB.api(uri, function (response) { 
     // check for a valid response 
     if (!response || response.error) 
     { 
      alert("error occured"); 
      return; 
     } 


     alert("console.log(response): " + console.log(response)); 
     alert("response: " + response[0].length); 
}); 

在传递的URI是这样的:/1637262814/albums

回答

0

返回JavaScript值。 Graph API总是返回一个对象,但有些old methods返回数字或布尔值。通常这是一个对象,如{ name: 'My Name', id: 1234 }。最容易在萤火虫中运行:FB.api('/me', function(r) { console.log(r) }),因为它可以让你探索响应。你也可以看看这个例子:http://fbrell.com/fb.api/user-info

+0

以及它应该返回一个JSON对象。问题是无论我尝试提醒某些事情是否尝试响应[0]或无论它可能是什么,我只是不断地在警报框中获得“对象”。我不知道如何获取JSON字符串,所以我可以使用jQuery的getJSON解析它。我只需要字符串。但我不明白为什么在他们的JS SDK示例中显示response.name等是PHP解析的事情,使他们能够直接引用他们尝试使用的值的名称? – PositiveGuy 2010-07-20 13:17:24

+0

当我警告出响应[0]我得到一个未定义的错误,但我知道响应不为空 – PositiveGuy 2010-07-20 13:21:20

+0

好console.log说响应是未定义的。但是,如果是这样的话,为什么它会进入我的回调并通过这个检查:if(!response || response.error)alert(“error occured”); return; } – PositiveGuy 2010-07-20 13:23:41

0

我的意思并不是不礼貌,但我认为,最快的方法来找出这将是尝试和警报(响应),和/或警报(评估(响应)),看看会发生什么。

只需提醒(回复)应该足以让你知道你在得到什么以及如何对待它。

+0

已经做到了。当我做出警报响应时,它只是说它是一个对象。 – PositiveGuy 2010-07-20 12:48:18

+0

实际上它是未定义的,这是合理的,因为我仍然没有收到任何数据。即使用户授予我需要访问其专辑和照片的权限集合,问题依然存在。 – PositiveGuy 2010-07-26 05:17:49

1

所以他们只是返回一个JSON字符串,但是你的编程语言把它包装到一个HttpResponse中。你必须从响应中提取JSON字符串,然后解析它。

+0

如果是这样的话,为什么我不能做alert(response [0]);看到那个字符串?当我这样做时,我只是将“对象”当作价值。那么JSON字符串是响应中的唯一对象吗? – PositiveGuy 2010-07-20 13:15:34

+0

看起来我没有收到数据:{data =} – PositiveGuy 2010-07-20 14:00:32