Показать сообщение отдельно
  #1 (permalink)  
Старый 28.08.2011, 00:04
Аспирант
Отправить личное сообщение для SkaN Посмотреть профиль Найти все сообщения от SkaN
 
Регистрация: 27.08.2011
Сообщений: 50

ajax, запрос не работает, возвращается не false
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 я немного "нубоват", иногда путаю синтаксис.
Ответить с цитированием