2012-05-04 157 views
0

希望這將是一個直截了當的解決方案,但我似乎無法自己解決它。用JQuery .each掙扎()函數

背景是我試圖創建一個Web應用程序,把你所有的Facebook朋友到jQuery用戶界面自動完成併發布到自己的牆,當你完成選擇朋友,然後點擊一個鏈接/按鈕等

我曾經爲一位朋友工作得很好,但要求已經改變(如以往),使這項工作爲多個朋友。

到目前爲止,除了涉及到實際張貼到用戶朋友的牆上時,我已經擁有了與多個朋友一起工作的所有內容。

代碼

我會盡量保持這有關我相信這是如下問題的代碼:

我有一個隱藏的輸入,我管理與ID填充:

<input id="fbid" type="hidden" value="12345, 567890, "> 

然後,我有一個jQuery函數,當鏈接被點擊後發佈到朋友的牆上時運行。

<div id="fb-root"></div> 
<script> 
window.fbAsyncInit = function() { 
    FB.init({ 
     appId  : '12345678', // App ID 
     channelUrl : '/channel.html', // Channel File 
     status  : true, // check login status 
     cookie  : true, // enable cookies to allow the server to access the session 
     oauth  : true, // enable OAuth 2.0 
     xfbml  : true // parse XFBML 
    }); 

    // Additional initialization code here 

    FB.login(function(response) 
    { 
     if (response.authResponse) 
     {            
      $("#send-voucher").click(function() { 

       // Post message to friend's wall 

       var opts = { 
        message : 'This is the message', 
        name : 'This is the name', 
        link : 'http://www.opticalexpress.co.uk', 
        description : 'This is the description', 
        picture : '/voucher_valid.png' 
       }; 

       var referees = $("#fbid").val(); 

       // remove last comma and space from the end of the string 
       referees = $.trim(referees); 
       referees = referees.substring(0, referees.length - 1); 

       var referee = referees.split(', '); // comma space 
       referee.each(function() { 

        FB.api('/'+ referee +'/feed', 'post', opts, function(response) 
        { 
         if (!response || response.error) 
         { 
          alert('Posting error occured'); 
         } 
         else 
         { 
          alert('Success - Post ID: ' + response.id); 
          $("#send-voucher").hide(); 
          $("#voucher-sent").fadeIn('slow'); 
         } 
        }); 
       }); 
      }); 
     } 
     else 
     { 
      alert('Not logged in'); 
     } 
    }, { scope : 'publish_stream' }); 
}; 

由螢火蟲報告的錯誤是referee.each is not a function

如果您需要任何進一步的信息,那麼請讓我知道。

回答

2

它需要jQuery的包裝,更改此:

referee.each(function() { 

要:

$(referee).each(function() { 
+0

啊......謝謝。似乎與Facebook部分有關的新錯誤。謝謝! – martincarlin87

+0

不要忘記標記你的問題作爲回答@ martincarlin87;) – nyson

+0

@nyson - 必須等待8分鐘;)感謝所有回答。錯誤現在似乎是字符串實際上並沒有被分割......它試圖兩次發佈到「12345,567890」,而不是「12345」,然後是「567890」...... – martincarlin87

1

您只能使用each()因爲你是一個jQuery對象。你referees變量是一個字符串數組,所以你需要從基礎$ jQuery對象調用它,並且把它作爲一個參數,像這樣:

$.each(referee, function() { 
    // ... 
} 

或者你可以用你的變量在一個jQuery對象,像這樣的:

$(referee).each(function() { 
    // ... 
} 
1

你要這樣稱呼它:

$.each(referee, function() { ... }); 

的jQuery.each()需要一個集合作爲然後第一個參數callb ack功能。