我正在使用 facebook api 使用 jquery .each 函数在 facebook 页面列表上发布消息。问题是 .each 函数运行很快,并将页面 ID 发送到我的 ajax 函数。在 ajax 请求响应之前,每个函数将下一页 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 消息。因为我在队列中有三个页面 ID,因此 facebook api 在最后一个 page3 id 上发布了三条消息。
我需要在每个页面 ID 上发布消息,在来自 facebook api 的 ajax 响应之后,然后 .each 函数将第二页请求发送到 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.')
}
})
}
})
}