我遇到了 edge.create 回调的一个非常奇怪的问题。
我所做的是每次发生 edge.create 或 edge.remove 事件时对服务器执行 ajax 调用(第一个是喜欢,第二个是不喜欢页面)。
这是代码
// this will fire when any of the like widgets are "liked" by the user
FB.Event.subscribe('edge.create', function(href, widget) {
var dataSend = 'ajaxFace=true&submitAdd=true&code='+SomeCodeToAdd;
$.ajax({
type: 'POST',
url: 'http://somewebpage.com',
data: dataSend,
success: function(data) {
alert(data);
},
erro: function(data) {
alert('Try again later');
}
});
});
//this will fire when any widgets are "disliked" by the user
FB.Event.subscribe('edge.remove', function(href, widget){
var dataSend = 'ajaxFace=true&submitDelete=true&code='+SomeCodeToRemove;
$.ajax({
type: 'POST',
url: 'http://somewebpage.com',
data: dataSend,
success: function(data) {
alert(data);
},
erro: function(data) {
alert('Try again later');
}
});
});
现在,发生了什么事。
'edge.remove' 事件的功能运行顺利,没有任何问题。
但是,当用户单击代码时,根本不会在 ajax 调用的成功部分运行,我尝试了一个简单的警报,例如 alert('test'); 但也没有任何反应。但是,该代码在后端运行良好,并且我要添加的代码已成功添加。
但是,如果我设置 async : false 代码有效,警报会显示在页面上,但浏览器会得到我真正想要避免的讨厌的“锁定”。
那么,有人知道这里到底发生了什么吗?
PS.:此页面上还有 2 个其他 facebook 元素,评论和活动提要。我不知道,但我的印象是活动提要可能与此有关......