2012-06-13 92 views
0

我還是JS的新手:我在連接兩個Ajax請求時遇到問題。第一個是簡單的:連接兩個Ajax請求

問FB用戶ID:

FB.api('/me', function(user) { 
      if (user) { 
      } 
     }); 

郵政定製FB對象上的自定義Facebook的行動:

function myfunction() 
    { 
     FB.api(
     '/me/fb:myaction', 
     'post', 
     { myobject: '/object/<%[email protected]%>' }, 
     function(response) { 
      if (!response || response.error) { 
       console.log('Error occured'); 
      } else { 
       console.log('FB POST was successful! Action ID: ' + response.id); 
       $.ajax({ 
       type: "POST", 
       url: "/record_action", 
       data: { facebook_id: "John", item_id: "<%= @candidate.id %>" }, 
       dataType: 'json', 
       success: function(data) { 
         console.log(data); 
        } 
       }).done(function(msg) { 
       console.log(msg); 
       }); 
      } 
     }); 
    } 

我如何保存user.facebook_id和將它傳遞給myfunction()的調用。當我嘗試類似:

FB.api('/me', function(user) { 
      if (user) { 
      myvar = user.facebook_id 
      } 
     }); 

並嘗試將myvar傳遞給myfunction調用它不起作用。我相信這是微不足道的。如何才能做到這一點?

+0

你的意思是什麼*似乎並不工作* ...? – McGarnagle

+0

是的。哈。確實不起作用。 –

回答

0

更好的答案是使用閉包(可能是第一個查詢的成功函數)來捕獲這個答案,並在閉包中完成剩下的工作。

效率較低(但在學習時可能更務實)是將數據置於兩個調用之間的全局變量中。 JavaScript中的全局變量存在着無數的問題,如果您不打算完全控制頁面上運行的所有腳本,則應該像避免鼠患一樣避免這些問題。