2010-07-27 18 views
1

我發誓這是昨晚工作,這就是爲什麼我能夠在凌晨1點睡覺)。今天早上我開始工作,現在它永遠不會到FB.api的回調。 FB.api是一個異步的Facebook JS調用,但不管昨天晚上這個工作是否正常,我不認爲它是一個Facebook服務器(終點)問題。方法回調不被擊中

  function BindAlbumAndPhotoData() 
      { 
       GetAllAlbums(userID, accessToken, function(aAlbums) 
       { 
        alert("we're back and should have data"); 

        if (aAlbums === null || aAlbums === undefined) { 
         alert("array is empty"); 
         return false; 
        } 

        var defaultAlbumID = aAlbums[0].id; 

        alert(" defaultAlbumID: " + defaultAlbumID); 

       }); 
      }; 


function GetAllAlbums(userID, accessToken, callbackFunctionSuccess) 
{ 
    var aAlbums = []; // array 
    var uri = "/" + userID + "/albums?access_token=" + accessToken; 

    alert("uri: " + uri); 

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

     for (var i = 0, l = response.data.length; i < l; i++) { 
      alert("Album #: " + i + "\r\n" + 
        "response.data[i].id: " + response.data[i].id + "\r\n" + 
        "response.data[i].name: " + response.data[i].name + "\r\n" + 
        "response.data[i].count: " + response.data[i].count + "\r\n" + 
        "response.data[i].link: " + response.data[i].link 
       ); 

      aAlbums[i] = new Album(
                response.data[i].id, 
                response.data[i].name, 
                response.data[i].count, 
                response.data[i].link 
                ); 

      alert("aAlbums[" + i + "].id : " + aAlbums[i].id); 
     } 

     alert("about to pass back the array to the callback function"); 

     callbackFunctionSuccess(aAlbums); 
    }); 
} 

所以它得到警報的URI,但從來沒有碰到FB.api中的第一個警報callback..meaning它從來沒有碰到警報(「內FB.api」);我不知道爲什麼。

修訂

看起來像被中止我的所有API調用。不知道會放棄它(FB服務器?):

alt text http://elbalazo.net/post/abortedcalls.jpg

更新:#2

好看起來像中止只是說HTTP請求完成。如果我在Firebug中右鍵單擊該中止行並選擇「在新選項卡中打開」,它將顯示HttpResponse數據...但我認爲這是因爲它發送手動請求時,我這樣做就像複製並粘貼此請求url手動進入瀏覽器...

另一方面,如果我右鍵單擊該中止行並選擇「複製響應頭」,我什麼也得不到。另外當我在Chrome中查看時,我看到請求標題但沒有看到任何響應標題。

所以還是不明白,爲什麼它沒有進入回調,然後如果我從FB.api通話

更新:#3

好取回數據,得到這個工作了。我在FB.api的回調中調用了回調方法。所以它正在轟炸。

function BindFacebookAlbumAndPhotoData() 
{ 
GetAllFacebookAlbums(userID, accessToken, function(aAlbums) 
{ 

    if (aAlbums === null || aAlbums === undefined) { 
    alert("array is empty"); 
    return false; 
    } 

    // Set the default albumID 
    var defaultAlbumID = aAlbums[0].id; 

}; 

功能GetAllAlbums(用戶ID,的accessToken,callbackFunctionSuccess) { 變種aAlbums = []; // array var uri =「/」+ userID +「/ albums?access_token =」+ accessToken;

//alert("uri: " + uri); 

FB.api(uri, function (response) { 
    alert("inside FB.api"); 

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

    for (var i = 0, l = response.data.length; i < l; i++) { 
     alert("Album #: " + i + "\r\n" + 
       "response.data[i].id: " + response.data[i].id + "\r\n" + 
       "response.data[i].name: " + response.data[i].name + "\r\n" + 
       "response.data[i].count: " + response.data[i].count + "\r\n" + 
       "response.data[i].link: " + response.data[i].link 
      ); 

     aAlbums[i] = new FacebookAlbum(
             response.data[i].id, 
             response.data[i].name, 
             response.data[i].count, 
             response.data[i].link 
             ); 

     alert("aAlbums[" + i + "].id : " + aAlbums[i].id); 
    } 
}); 

    alert("about to pass back the array to the callback function"); 
    callbackFunctionSuccess(aAlbums); 

}

+0

您是否檢查過dom檢查器,看看Facebook是否實際發送迴應的內容? – RobertPitt 2010-07-27 15:03:29

+0

不知道如何使用...我已經安裝了螢火蟲。 – PositiveGuy 2010-07-27 15:05:26

+0

是dom inspector的一個插件嗎? – PositiveGuy 2010-07-27 15:05:44

回答

1

嗯嘗試以下

function GetAllAlbums(userID, accessToken, callbackFunctionSuccess) 
{ 
    var aAlbums = []; // array 
    var uri = "/" + userID + "/albums?access_token=" + accessToken; 

    alert("uri: " + uri); 

    FB.api(uri,GetAllAlbumsCallback); 
} 

function GetAllAlbumsCallback(Data) 
{ 
    alert("inside FB.api"); 
     // check for a valid response 
     if (!Data || Data.error) 
     { 
      return; 
     } 

     for (var i = 0, l = Data.data.length; i < l; i++) 
     { 
      aAlbums[i] = new Album(
       Data.data[i].id, 
       Data.data[i].name, 
       Data.data[i].count, 
       Data.data[i].link 
      ); 

      if (aAlbums === null || aAlbums === undefined) 
      { 
       alert("array is empty"); 
       return false; 
      } 
      var defaultAlbumID = aAlbums[0].id; 
      alert(" defaultAlbumID: " + defaultAlbumID); 
     } 
} 

剛剛嘗試回調被匿名分開,有時可以有範圍的問題:/

分離他們應該給他們一個全球範圍,一般不太容易出錯。

+0

omg這拿走了石頭!所以,我看到發送的請求https://graph.facebook.com/100001379631246/albums?access_token=132444323462464|2.H_RTxysYz7SIkSfejmr_sA__.3600.1280250000-100001379631246|pNMnTy5YzBF1lek2v79n6vXlAb4.&access_token=132444323462464%7C2.H_RTxysYz7SIkSfejmr_sA__.3600.1280250000-100001379631246%7CpNMnTy5YzBF1lek2v79n6vXlAb4。 &callback = FB.ApiServer._callbacks.f23c04efe&sdk = joey – PositiveGuy 2010-07-27 15:30:34

+0

是的,但至少我應該擊中FB.api的回調,而不管我是否傳入了GetAllAlbums的回調函數引用...而我不是。 – PositiveGuy 2010-07-27 15:31:32

+0

確定Firebug將該請求顯示爲中止。它必須是臉譜上的東西,然後 – PositiveGuy 2010-07-27 15:35:25