AJAX отправляет несколько раз в Chrome - PullRequest
0 голосов
/ 13 декабря 2010

http://cl.ly/2D221O0J33421Y1v2V0Q

Есть ли способ избежать этого?

Отлично работает в Firefox и т. Д.

votes.php: http://pastie.org/1369778

jQuery(function(){
jQuery("a.vote_down").click(function(){
 //get the id
 the_id = $(this).attr('id');

 // show the spinner
 $(this).parent().html("<img src='images/spinner.gif'/>");

 //the main ajax request
  $.ajax({
   type: "POST",
   data: "action=vote_down&id="+$(this).attr("id"),
   url: "/votes.php",
   success: function(msg)
   {
    $("span#votes_count"+the_id).fadeOut();
    $("span#votes_count"+the_id).html(msg);
    $("span#votes_count"+the_id).fadeIn(1000);
    $("span#vote_buttons"+the_id).remove();
   }
  });
 });
});

Ответы [ 3 ]

2 голосов
/ 13 декабря 2010

Вы пробовали использовать обработчик щелчков return false; (конечно, в конце функции)?Или попробуйте ввести аргумент в этот обработчик с именем e и добавьте e.stopPropagation ();

Суть в том, что вы хотите предотвратить всплывающее событие click после его обработки.*

1 голос
/ 13 декабря 2010

если это событие href, выполните следующее в конце кода

event.preventDefault(); // это лучший способ сделать

http://api.jquery.com/event.preventDefault/

или

return false;
0 голосов
/ 13 декабря 2010

Вы можете попытаться использовать метод «делегат» вместо «щелчка».«$ .Delegate» предотвращает «всплывающее» событие, назначая событие контексту элемента вместо объекта окна.

Также, если вы используете «якорь» с пустым «href»параметр, вы можете попробовать использовать другой элемент HTML, например, span.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...