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 я немного "нубоват", иногда путаю синтаксис. |
1. Советую протестировать с помощью firebug на предмет отправок ajax запросов.
2. напишите ссылку так: <a href="?id=article&article=<?=$article ?>&rate=good#voting" onClick="vote('good'); return false;"> или так: <a href="?id=article&article=<?=$article ?>&rate=good#voting" onClick="return vote('good');"> 3. Возможно что аякс отрабатывает, просто происходит редирект и Вы не видите результат работы. |
firebug ничего не показывает. onClick="vote('good'); return false;" не помогает. А аякс запрос точно не срабатывает, потому что я проверял по результату. В базе должно было бы прибавиться два голоса, а на деле всего один
кстати, я пробовал просто повесить на ссылку javascript: vote('good'), но ничего абсолютно не происходило. И в консоли firebug тоже |
Консоль ошибок смотрите.
Цитата:
|
консоль ошибок смотрел, ничего - чисто. а по поводу <?= ?> - шаблонизатор требует полного переписания, безнадежно устарел))
|
Хорошо, покажите, что генерирует
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; }; |
$.(...
тут между скобкой и $ не должно быть точки, тогда работает. + желательно не data: {voice: voicer, article: <?=$article ?>}, а article передавать сторым параметром. И вызывать так: onClick="return vote('good', '<?=$article ?>');". теперь все работает |
Часовой пояс GMT +3, время: 06:48. |