jquery .each関数を使用して、Facebookページのリストにメッセージを投稿するためにFacebook APIを使用しています。問題は、.each 関数がすばやく実行され、ページ ID が ajax 関数に送信されることです。そして、ajax request .each 関数の応答の前に、次のページ ID を ajax 関数に送信し、最後に facebook api がキュー内の最後のページ ID にメッセージを投稿します。投稿メッセージの数は、キュー内のページ ID の長さです。例の場合。私は3つのページIDを持っています
<select>
<option>page1 id|AccessToken></option>
<option>page2 id|AccessToken></option>
<option>page3 id|AccessToken></option>
</select>
Jquery .each 関数はすべての pageID を ajax 関数に送信し、facebook api は最後の page3 ID に 3 メッセージを投稿します。キューに 3 つのページ ID があるため、Facebook API は最後のページ 3 ID に 3 つのメッセージを投稿します。
Facebook APIからのajax応答の後、各ページIDにメッセージを投稿する必要があり、.each関数は2番目のページ要求をFacebook APIに送信します。
次のコードを使用しました。
Java スクリプト コード
function submitPost()}{
$('#users input:checkbox').each(function () {
var a = (this.checked ? $(this).val() : "");
if (a != ""){
postToPage(a) // a = PageId|AccessToken <option>PageId|AccessToken</option>
}
});
}
function postToPage(c) {
dataSeprator = c.split("|");
d = dataSeprator[0];
my_message = $('#txtmsg').val();
url = $('#txturl').val();
title = $('#txttitle').val();
desc = $('#txtdesc').val();
picUrl = 'facebook.png';
FB.api('/' + d, { fields: 'access_token'}, function (b) {
if (dataSeprator[1].length > 0) {
FB.api('/' + d + '/feed', 'post', {
message: my_message,
link: url,
name: title,
picture: picUrl,
description: desc,
access_token: dataSeprator[1]
}, function (a) {
if (!a || a.error) {
alert('Error occured')
} else {
alert('Message Posted Successfully.')
}
})
}
})
}