Javascript.RU

Создать новую тему Ответ
 
Опции темы Искать в теме
  #1 (permalink)  
Старый 17.04.2014, 21:11
Аспирант
Отправить личное сообщение для SLameN Посмотреть профиль Найти все сообщения от SLameN
 
Регистрация: 13.08.2012
Сообщений: 70

Рейтинг новости
Делаю рейтинг новости, но вот, что-то не получается (не работает), скажите, что здесь не так? Может быть я не подключил какую-то библиотеку...

<div id='rating'>
<div id='rat_res'>показывается рейтинг из БД</div>
<div id='rat_green' tid='ИД новости'></div>
</div>


<script type="text/javascript">
        $(document).ready(function(){
            $('#rat_green').click(function(){
                var tid = $(this).attr("tid");
                
                $.ajax({
                    type: "POST",
                    url: "/like.php",
                    data: "id="+tid,
                    dataType: "html",
                    cache: false,
                    success: function(data)
                    {
                        if(data == 'no')
                        {
                            alert('Вы уже голосовали');
                        }
                        else
                        {
                            $("#rat_res").html(data);
                        }
                    }
                });
            });
        });
    </script>

Последний раз редактировалось SLameN, 17.04.2014 в 21:52. Причина: добавил ;
Ответить с цитированием
  #2 (permalink)  
Старый 17.04.2014, 21:54
Аспирант
Отправить личное сообщение для SLameN Посмотреть профиль Найти все сообщения от SLameN
 
Регистрация: 13.08.2012
Сообщений: 70

После редактирования есть улучшения, выдает сообщение: Вы уже голосовали, т.е. data == 'no'
Ответить с цитированием
  #3 (permalink)  
Старый 17.04.2014, 23:21
Аспирант
Отправить личное сообщение для SLameN Посмотреть профиль Найти все сообщения от SLameN
 
Регистрация: 13.08.2012
Сообщений: 70

Что еще обнаружил, на других новостях (кроме 1) ничего вообще не происходит... Зашел через IE и начал делать рейтинг 1 сообщения, и РАБОТАЕТ, но я могу добавлять сколько хочу.... на других новостях не работает
Ответить с цитированием
  #4 (permalink)  
Старый 18.04.2014, 04:12
Профессор
Отправить личное сообщение для jsnb Посмотреть профиль Найти все сообщения от jsnb
 
Регистрация: 15.03.2014
Сообщений: 561

В приведенном коде ошибок не вижу. Ну, можно еще путь до скрипта проверить, но раз оно вам какие-то данные возвращает, занчит путь правильный. Проверяйте серверную часть.
Ответить с цитированием
  #5 (permalink)  
Старый 18.04.2014, 11:09
Аспирант
Отправить личное сообщение для SLameN Посмотреть профиль Найти все сообщения от SLameN
 
Регистрация: 13.08.2012
Сообщений: 70

Даже если я вот так сделаю в файле like.php:
$id = (int)$_POST["id"];
echo $id;


То работает только первой новости, на остальных не работает. В Chrome 1 новость тоже заработала. Я думаю, что ошибка в JS, потому что не приходят данные с других новостей (кроме первой). tid проверил, все уникально, ИД верные

//1 новость
<div id='rating'>
<div id='rat_res'>показывается рейтинг из БД</div>
<div id='rat_green' tid='ИД новости'></div>
</div>

//2 новость
<div id='rating'>
<div id='rat_res'>показывается рейтинг из БД</div>
<div id='rat_green' tid='ИД новости'></div>
</div>

//3 новость
<div id='rating'>
<div id='rat_res'>показывается рейтинг из БД</div>
<div id='rat_green' tid='ИД новости'></div>
</div>

Последний раз редактировалось SLameN, 18.04.2014 в 11:16. Причина: добавил html
Ответить с цитированием
  #6 (permalink)  
Старый 18.04.2014, 11:24
Профессор
Отправить личное сообщение для jsnb Посмотреть профиль Найти все сообщения от jsnb
 
Регистрация: 15.03.2014
Сообщений: 561

Сообщение от SLameN Посмотреть сообщение
//1 новость
<div id='rating'>
<div id='rat_res'>показывается рейтинг из БД</div>
<div id='rat_green' tid='ИД новости'></div>
</div>

//2 новость
<div id='rating'>
<div id='rat_res'>показывается рейтинг из БД</div>
<div id='rat_green' tid='ИД новости'></div>
</div>

//3 новость
<div id='rating'>
<div id='rat_res'>показывается рейтинг из БД</div>
<div id='rat_green' tid='ИД новости'></div>
</div>
Так id у дивов куда вставлять надо рейтинг что ли одинаковый? И у тех которые кликать надо тоже? И куда по вашему каллбек должен данные поместить?

Последний раз редактировалось jsnb, 18.04.2014 в 11:35.
Ответить с цитированием
  #7 (permalink)  
Старый 18.04.2014, 12:16
Аспирант
Отправить личное сообщение для SLameN Посмотреть профиль Найти все сообщения от SLameN
 
Регистрация: 13.08.2012
Сообщений: 70

И как мне быть в этой ситуации?
Ответить с цитированием
  #8 (permalink)  
Старый 18.04.2014, 14:01
Профессор
Отправить личное сообщение для jsnb Посмотреть профиль Найти все сообщения от jsnb
 
Регистрация: 15.03.2014
Сообщений: 561

Сообщение от SLameN Посмотреть сообщение
И как мне быть в этой ситуации?
Ну сделайте для дивов куда должны попадать результаты какие-нибудь идентификаторы, тот же tid и ориентируясь по ним вставляйте данные.
Т.е. в HTML сделать что-то типо этого:
<div id='rating'>
<div class='rat_res' tid='111'>показывается рейтинг из БД</div>
<div class="rat_green" tid='111'></div>
</div>

<div id='rating'>
<div class='rat_res' tid='222'>показывается рейтинг из БД</div>
<div class="rat_green" tid='222'></div>
</div>

<div id='rating'>
<div class='rat_res' tid='333'>показывается рейтинг из БД</div>
<div class="rat_green" tid='333'></div>
</div>


А в JS что-то типо этого:
$(document).ready(function () {
  $('.rat_green').click(function () {
    var tid = $(this).attr("tid");
    $.ajax({
      type: "POST",
      url: "/like.php",
      data: "id=" + tid,
      dataType: "html",
      cache: false,
      success: function (data) {
        if (data == 'no') {
          alert('Вы уже голосовали');
        } else {
          $(".rat_res[tid="+tid+"]").html(data);
        }
      }
    });
  });
});

Последний раз редактировалось jsnb, 18.04.2014 в 14:13.
Ответить с цитированием
  #9 (permalink)  
Старый 18.04.2014, 14:16
Аспирант
Отправить личное сообщение для SLameN Посмотреть профиль Найти все сообщения от SLameN
 
Регистрация: 13.08.2012
Сообщений: 70

Работает А Другого способа нет? Это ж сколько строк JS будет, а еще CSS...

<script type='text/javascript'>
$(document).ready(function(){
    $('#rat_green1').click(function() {
        var tid = $(this).attr('tid');
        
        $.ajax({
            type: 'POST',
            url: '/like.php',
            data: 'id='+tid,
            dataType: 'html',
            cache: false,
            success: function(data)
            {
                if(data == 'no')
                {
                    alert('Вы уже голосовали');
                }
                else
                {
                    $('#rat_res1').html(data);
                }
            }
        });
    });
})
</script>

<div id='rating'>
<div id='rat_res1'>Рейтинг</div>
<div id='rat_green1' tid='1'></div>


<script type='text/javascript'>
$(document).ready(function(){
    $('#rat_green2').click(function() {
        var tid = $(this).attr('tid');
        
        $.ajax({
            type: 'POST',
            url: '/like.php',
            data: 'id='+tid,
            dataType: 'html',
            cache: false,
            success: function(data)
            {
                if(data == 'no')
                {
                    alert('Вы уже голосовали');
                }
                else
                {
                    $('#rat_res2').html(data);
                }
            }
        });
    });
})
</script>

<div id='rating'>
<div id='rat_res2'>Рейтинг</div>
<div id='rat_green2' tid='2'></div>
Ответить с цитированием
  #10 (permalink)  
Старый 18.04.2014, 14:21
Профессор
Отправить личное сообщение для jsnb Посмотреть профиль Найти все сообщения от jsnb
 
Регистрация: 15.03.2014
Сообщений: 561

Сообщение от SLameN Посмотреть сообщение
Работает А Другого способа нет? Это ж сколько строк JS будет, а еще CSS...
Я там обновил предыдущий пост, там показал как примерно можно сделать HTML чтобы в JS можно было просто находить нужные элементы.
Еще при такой структуре HTML можно находить элемент через prev(), но тогда при смене порядка тегов всё будет плохо.

Последний раз редактировалось jsnb, 18.04.2014 в 14:24.
Ответить с цитированием
Ответ



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

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


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Рейтинг новостей. stixia007 Общие вопросы Javascript 3 11.04.2013 21:49
Рейтинг материала also Элементы интерфейса 3 03.03.2013 17:33
jquery.rating Рейтинг к каждой фотографии Makkssimka jQuery 14 18.02.2013 21:38
Звездный рейтинг на js nata031189 jQuery 3 22.04.2012 21:50
Мобильные новости anto111ka Ваши сайты и скрипты 1 07.07.2009 08:48