тебе надо различать кнопки like для разных комментариев, обычно это делается через this в javascript и через него получается id комментария, который может быть зашит в data атрибут html тега
есть книги и документация, статьи, в которых можно прочитать про this, ещё тебе повезло и в документации к jquery click есть пример с this, там 3 параграфа и по this их отличают друг от друга, как раз то что тебе нужно
Я сделал так: Код (Text): <script> $(document).ready(function(){ $("#com_like_btn").click(function(){ var a = $(this).next(); $.ajax({ type:"POST", url:"handlers/add_like.php", data:{"com_id": a.val()}, response:"text", success:function(data) { $("#num_likes").text(data); } }); }); }); </script> Но ничего не поменялось.
а что у тебя в переменной "a"? легче задать кнопке data атрибут и ему присвоить id (php), потом через this его получать (javascript) (jquery data) делай с пониманием, если что-то не работает, просто скажи что не понял как всё связать вместе
Так вот я и стараюсь с пониманием делать))) Вообще стараюсь не делать того в чём не понимаю хотя бы того как это работает.
Код (PHP): <input id="com_like_btn" data-comid='10' ...> this + jquery data https://api.jquery.com/data/
Сделал вот так: <input data-comid="<?php echo $row_com["id"];?>" id="com_like_btn" title="Нравится" name="com_like_btn" class="mini_buttons" type="image" src="images/like.png"></input> <script> $(document).ready(function(){ $("#com_like_btn").click(function(){ $.ajax({ type:"POST", url:"handlers/add_like.php", data:{"com_id": $(this).data("comid")}, response:"text", success:function(data) { $("#num_likes").text(data); } }); }); }); </script> Но всё осталось так же. По прешнему только последний коммент можно "лайкать".
а id какой на сервер отправляется? всегда последний? id атрибут должен быть уникальный http://htmlbook.ru/html/attr/id
id берётся из массива (row_com["id"]) который в цикле. То есть комментарии выводятся циклом, и когда они выводятся - им присваивается id.
хм... похоже что нет, сейчас точно проверю. А как тогда ему сделать разные id? Добавлено спустя 2 минуты 13 секунд: Подожди, $_POST на сервер обработки всм? Или то как js читает id комментария? Добавлено спустя 2 минуты 27 секунд: Дело в том, что кнопки вообще никак не реагируют на нажатие. (Все кроме первой).
Так в том то и дело что если б я выводил свои комментарии вручную, я б давал им свои id а так как они выводятся из цикла, то я не знаю, отличаются они или нет. Может там вообще только последнему даётся id, а у предыдущих стирается.
так обходись без id, я же дал пример, он работает, и там сделано через атрибут class. цикл тут не причём, можно и с циклом выводить уникальные id
ну проблема значит в другом, я посмотрел через инструменты разработчика в google chrome по кнопке F12 (вкладка networks -> запрос -> headers) когда ставишь лайк, то com_id отправляется на сервер который присвоен кнопке которую нажали, значит всё нормально
Можешь зайти и посмотреть как прикольно сейчас ведут себя эти кнопки Я теперь вообще не могу понять по какому смыслу они работают) Добавлено спустя 3 минуты 4 секунды: А, я кажется понял. Теперь данные отправляются нормально, как надо... но дело в том что там где должны писаться цифры - они пишутся очень странно. Причём и когда через id и через class
Если через класс - то значения всех комментов стают такими как должно быть у того где нажимаю, но если перезагрузить страницу - всё правильно. Там где нажал - изменилось, а остальные стали как были. А если id то я так и не понял по какому принципу они меняются.
там ещё ошибки сыпятся в консоле, если нажать на кнопку, ты отладку делаешь? Добавлено спустя 1 минуту 25 секунд: так это логическая ошибка, посмотри как ты присваиваешь значение и поймёшь почему оно одинаковое для всех становиться, нужно же изменять только то что изменил, а не всё, опять this используй
У меня не сыпятся. Добавлено спустя 2 минуты 9 секунд: Код (PHP): <input data-comid="<?php echo $row_com["id"];?>" title="Нравится" name="com_like_btn" class="mini_buttons com_like_btn" type="image" src="images/like.png"></input> </td><td style="padding-left: 5px"><span data-num_likes class="num_likes"><?php echo $res1->num_rows;?></span></td></tr></table> А как тут испод input подобраться к span через this? Добавлено спустя 2 минуты 39 секунд: Вот такая конструкция не работает)) $(this).next().next().next().text(data);
так кроме кнопки там ничего нет, нужно обращаться выше по иерархии и от туда уже к span, смотри parent() и css селекторы