function vote(voicer) {
$.ajax({
url: "index.php?id=ajax&action=vote",
type: "GET",
data: {voice: voicer, article: <?=$article ?>},
success: function(html) {
$.("#voting").html(html);
}
});
return false;
};
<a href="?id=article&article=<?=$article ?>&rate=good#voting" onClick="vote('good')">
$voice = $_GET['voice'];
$article = $_GET['article'];
$vote_stat = $rating_class->vote($article, $voice);
if ($vote_stat == 'ok') {
?>
<span style="padding: 20px; background-color: #99FF99; border: 1px solid green;">Спасибо, ваш голос принят!</span>
<?PHP
}
else {
?>
<span style="padding: 20px; background-color: #FF8C69; border: 1px solid red;">Ошибка отправки голоса. Обратитесь к администратору.</span>
<?PHP
}
Первый код: функция, которая отсылает запрос, в котором указывает статью, за которую проголосовали и какой голос (плохой или хороший). В коде HTML я указал, как обращается к функции. Поидее должно быть так: если у клиента работает JS, значит выполняется функция onclick="vote('good')" (например), которая не дает перезагружать страницу (return false). А если JS выключен, то переходит по ссылке и таким образом голосует. Такой порядок менять нельзя, такая задумка. Соответственно, код PHP дает запрос к методу, отдает ему название статьи и голос, и уже по ответу метода формирует сообщение ответа.
А вот, что происходит в реальности: я нажимаю на ссылку, страница перезагружается. Еще было бы что-то понятно, если бы начислялось два голоса, значит просто return false не работает. Но начисляется один голос, значит не работает вся функция, или только ajax();.
На самом деле в JS я немного "нубоват", иногда путаю синтаксис.