2010-12-05 2 views
1

Я хотел (а) использовать кнопку facebook как голосование на моей странице. К сожалению, когда нажата кнопка «Мне нравится», я получаю 3-5 запросов к моей функции вместо одного. Есть ли способ избежать этого Пример кода:Несколько запросов, когда FB edge.create Событие найдено

FB.Event.subscribe('edge.create', function(href, widget) { 
    console.log(href, widget); 
}); 

Мой код:

FB.Event.subscribe('edge.create', function(href, widget) { 
     $.ajax({ 
      type: "POST", 
      url: "/votes/register", 
      data: "href="+href, 
      dataType: 'json', 
      success: function(data){ 
       $(".list-submissions").html(data["html"]) 
      } 
     }); 
     return false;  
    }); 

Или, может быть, я могу заблокировать это со стороны функция, используя Джанго? Вот мой код функции:

def register_vote(request): 
    ip = request.META['REMOTE_ADDR'] 
    url = request.POST.get("href", "") 
    id = os.path.basename(url) 

    try: 
     vote = Vote.objects.filter(ip=ip, id=id) 
    except: 
     vote = None 

    if not vote: 
     vote = Vote(ip=ip, uid=id) 
     vote.save() 

    html = render_finalists(request) 
    ajax = simplejson.dumps({ 
     "html": html 
    }, cls=LazyEncoder) 
    return HttpResponse(ajax, mimetype='application/javascript') 

ответ

0

Вы можете получить несколько запросов к вам функцию обратного вызова, если ядро ​​Facebook JS SDK была ссылка несколько раз, то есть следующий тег сценария (или вариации) больше, чем один раз:

<script src="http://connect.facebook.net/en_US/all.js"></script> 
1

Я сталкиваюсь с одной и той же проблемой, создавая, как кнопки на лету, с помощью AJAX, специфичные для контента, но «edge.create», некоторые из которых хранят событие и увеличивают значение edge.create и стреляют несколько раз, когда я нажмите на другой вид, похожий на FB.

У пчелы не ударился головой так сильно, не повезло, пока еще :(

любой быстрой помощи, следует принимать во внимание.

Наконец я взломал, просто сравнил ответ, который я получал от ответа объект, который мне необходимо пройти, и который работает.

FB.Event.subscribe('edge.create', function(response) { 
      if (response.toString() == shareUrl.toString()) {} } 

 Смежные вопросы

  • Нет связанных вопросов^_^