Рейтинг новости
Делаю рейтинг новости, но вот, что-то не получается (не работает), скажите, что здесь не так? Может быть я не подключил какую-то библиотеку...
<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> |
После редактирования есть улучшения, выдает сообщение: Вы уже голосовали, т.е. data == 'no'
|
Что еще обнаружил, на других новостях (кроме 1) ничего вообще не происходит... Зашел через IE и начал делать рейтинг 1 сообщения, и РАБОТАЕТ, но :D я могу добавлять сколько хочу.... на других новостях не работает
|
В приведенном коде ошибок не вижу. Ну, можно еще путь до скрипта проверить, но раз оно вам какие-то данные возвращает, занчит путь правильный. Проверяйте серверную часть.
|
Даже если я вот так сделаю в файле 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> |
Цитата:
|
И как мне быть в этой ситуации? :(
|
Цитата:
Т.е. в 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); } } }); }); }); |
Работает :) А Другого способа нет? Это ж сколько строк 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> |
Цитата:
Еще при такой структуре HTML можно находить элемент через prev(), но тогда при смене порядка тегов всё будет плохо. |
Большое спасибо вам за помощь!
|
Часовой пояс GMT +3, время: 08:49. |