Есть такой модуль — Vote Up Down. Весьма полезный, когда речь заходит обо всяких рейтингах, кармах и прочих количественных измерениях деятельности пользователей на сайте. Сам по себе он (модуль) вполне адекватный, в особенности если использовать подмодуль vud_field
. К слову, есть тенденция к замене всех составляющих Vote Up Down на одно это поле — вполне в духе седьмого Друпала.
Так или иначе, иногда требуется выполнить на сайте действия непосредственно после очередного пользовательского голоса. И получить по AJAXу ответ от сервера. Самый примитивный пример: голос за/против пользователя изменяет его рейтинг по определенной формуле — и нам надо обновить не только сам виджет голосовалки, но и рейтинг пользователя в каком-нибудь другом месте на странице.
Очевидно, нужно зацепиться в JavaScript-е за какое-нибудь событие. Можно было бы подвесить обработчик .click()
на кнопках голоса, но не тут-то было: когда обработчику будет передан контроль — вновь созданный голос еще не будет сохранен на сайте, и следовательно данные, которые мы получим в ответ, не будут актуальными.
Но — есть в jQuery возможность зацепиться за ajaxComplete. Это событие происходит всякий раз, когда очередной запрос ajax был завершен. Посмотрим, как это применить к Vote Up Down.