Рейтинг новости
Делаю рейтинг новости, но вот, что-то не получается (не работает), скажите, что здесь не так? Может быть я не подключил какую-то библиотеку...
<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, время: 02:06. |