Javascript.RU

Создать новую тему Ответ
 
Опции темы Искать в теме
  #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 я немного "нубоват", иногда путаю синтаксис.
Ответить с цитированием
  #2 (permalink)  
Старый 28.08.2011, 01:23
Аспирант
Отправить личное сообщение для Black_Prince Посмотреть профиль Найти все сообщения от Black_Prince
 
Регистрация: 11.07.2011
Сообщений: 64

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. Возможно что аякс отрабатывает, просто происходит редирект и Вы не видите результат работы.
Ответить с цитированием
  #3 (permalink)  
Старый 28.08.2011, 10:36
Аспирант
Отправить личное сообщение для SkaN Посмотреть профиль Найти все сообщения от SkaN
 
Регистрация: 27.08.2011
Сообщений: 50

firebug ничего не показывает. onClick="vote('good'); return false;" не помогает. А аякс запрос точно не срабатывает, потому что я проверял по результату. В базе должно было бы прибавиться два голоса, а на деле всего один
кстати, я пробовал просто повесить на ссылку javascript: vote('good'), но ничего абсолютно не происходило. И в консоли firebug тоже
Ответить с цитированием
  #4 (permalink)  
Старый 28.08.2011, 14:35
Аватар для B@rmaley.e><e
⊞ Развернуть
Отправить личное сообщение для B@rmaley.e><e Посмотреть профиль Найти все сообщения от B@rmaley.e><e
 
Регистрация: 11.01.2010
Сообщений: 1,810

Консоль ошибок смотрите.
Сообщение от SkaN
<?=$article ?>
О, http://ru.wikipedia.org/wiki/Xss
Ответить с цитированием
  #5 (permalink)  
Старый 28.08.2011, 19:53
Аспирант
Отправить личное сообщение для SkaN Посмотреть профиль Найти все сообщения от SkaN
 
Регистрация: 27.08.2011
Сообщений: 50

консоль ошибок смотрел, ничего - чисто. а по поводу <?= ?> - шаблонизатор требует полного переписания, безнадежно устарел))
Ответить с цитированием
  #6 (permalink)  
Старый 28.08.2011, 20:14
Аватар для B@rmaley.e><e
⊞ Развернуть
Отправить личное сообщение для B@rmaley.e><e Посмотреть профиль Найти все сообщения от B@rmaley.e><e
 
Регистрация: 11.01.2010
Сообщений: 1,810

Хорошо, покажите, что генерирует
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;
};
Ответить с цитированием
  #7 (permalink)  
Старый 29.08.2011, 10:01
Аспирант
Отправить личное сообщение для SkaN Посмотреть профиль Найти все сообщения от SkaN
 
Регистрация: 27.08.2011
Сообщений: 50

$.(...
тут между скобкой и $ не должно быть точки, тогда работает. + желательно не data: {voice: voicer, article: <?=$article ?>}, а article передавать сторым параметром. И вызывать так: onClick="return vote('good', '<?=$article ?>');". теперь все работает
Ответить с цитированием
Ответ



Опции темы Искать в теме
Искать в теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
не работает запрос Ajax в IE kiff86 AJAX и COMET 1 03.08.2011 21:52
Не работает ajax запрос DZHETIGAPA AJAX и COMET 0 11.05.2011 00:37
Не работает jQuery меню с AJAX eugene1986 jQuery 0 08.07.2010 18:49
не работает ajax запрос ЯРОСЛАВ jQuery 9 07.04.2010 22:31
не работает AJAX запрос zokeoner AJAX и COMET 2 02.03.2010 11:38