Как реализовать плагин JQuery-upvote с помощью php

В моем проекте есть плагин jQuery голос за. Я хочу иметь функцию голосования вверх и вниз, такую ​​как переполнение стека, но я совершенно запутался в том, как передавать значения через вышеуказанную функцию плагина голосования вверх в мой файл php. Я попытался передать свой параметр id в Ajax, но получаю только идентификатор первой строки. Раньше я использовал обработчик событий по щелчку, чтобы я мог отслеживать, какая строка была нажата, но я не могу реализовать этот метод с этой функцией. Или кто-то может объяснить, как мне реализовать указанный выше плагин jQuery с php на моей странице.

Мой HTML в цикле php for:

  $sample = $this->db->prepare("SELECT * from Ratings");
  $sample->execute();
  $RES = $sample->fetchAll(PDO::FETCH_ASSOC); 
  foreach ($RES as $data){

      $upVote =  $data['Upvote'];
      $downvote =  $data['Downvote'];
      $counter = $data['Counter'];

echo '<tr>

        <td>
        <div value='.$id.' name = "id" class = "upvote upvoteForm upvote-serverfault">
         <a class = "upvote">'.$upVote.'</a>
                <span class = "count">'.$counter.'</span>
                 <a class = "downvote">'.$downvote.'</a>
                 <a class = "star"></a>
       </td></tr>';
    }

Моя функция jquery:

<script>
var callback = function(element) {
    $.post(
     "voting.php/",
     {
         id: $(".id").val(),
         upvoted: $(".upvote").val(),
         downvoted:  $(".downvote").val(),
         star: $(".star").val()
     },
   );
};
$('.upvoteForm').upvote({callback});

</script>
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
В JavaScript одним из самых запутанных понятий является поведение ключевого слова "this" в стрелочной и обычной функциях.
Концепция локализации и ее применение в приложениях React ⚡️
Концепция локализации и ее применение в приложениях React ⚡️
Локализация - это процесс адаптации приложения к различным языкам и культурным требованиям. Это позволяет пользователям получить опыт, соответствующий...
Улучшение производительности загрузки с помощью Google Tag Manager и атрибута Defer
Улучшение производительности загрузки с помощью Google Tag Manager и атрибута Defer
В настоящее время производительность загрузки веб-сайта имеет решающее значение не только для удобства пользователей, но и для ранжирования в...
Безумие обратных вызовов в javascript [JS]
Безумие обратных вызовов в javascript [JS]
Здравствуйте! Юный падаван 🚀. Присоединяйся ко мне, чтобы разобраться в одной из самых запутанных концепций, когда вы начинаете изучать мир...
Система управления парковками с использованием HTML, CSS и JavaScript
Система управления парковками с использованием HTML, CSS и JavaScript
Веб-сайт по управлению парковками был создан с использованием HTML, CSS и JavaScript. Это простой сайт, ничего вычурного. Основная цель -...
JavaScript Вопросы с множественным выбором и ответы
JavaScript Вопросы с множественным выбором и ответы
Если вы ищете платформу, которая предоставляет вам бесплатный тест JavaScript MCQ (Multiple Choice Questions With Answers) для оценки ваших знаний,...
0
0
107
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

Проверьте Примеры инициализации в документации. метод обратного вызова получает объект, который содержит данные текущего проголосованного элемента. Не пытайтесь получить значения с помощью селекторов jQuery, используйте параметр element. И если я правильно понимаю документацию, вы даже можете полностью опустить объект данных, если сохраните структуру DOM и добавите атрибут data-id:

<div data-id = "'.$id.'" class = "upvote upvoteForm upvote-serverfault">

var callback = function(element) {
    $.post(
         "voting.php/",
         // this object could probably be omitted
         {
             id: element.id,
             upvoted: element.upvoted,
             downvoted:  element.downvoted,
             star: element.star
         },
    );
};
$('.upvoteForm').upvote({callback: callback});

Примечание: я не тестировал это, нет гарантии, что это работает :-)

Другие вопросы по теме