Как исправить jquery ajax, не отправляющий данные в файл PHP

Я пытаюсь сделать систему, похожую на систему «нравится/не нравится». У меня все настроено, но моя функция jquery.ajax не отправляет данные, которые мне нужны. Функция вызывается, но данные не устанавливаются.

Я добавил функцию для проверки того, вызывается ли оператор isset if, но эта функция не вызывается, поэтому я знаю, что что-то не так с функцией ajax. Я пробовал просматривать другие сообщения о подобных проблемах, но ни одно из этих решений не сработало. Извините, если это просто я глуп, и решение легко.

PHP — community.php — главная веб-страница

<div id = "entries">
    <?php foreach($posts as $post): ?>
    <div class = "entry">
      <div class = "entryInfo">
        <img src = "IMAGES/PlaceholderAlbumCover.jpg" alt = "Album Cover" class = "center" height = "200" width = "200">
        <div class = "artistInfo">
          <h4><?php echo $post['name'] ?></h4>
          <p> <?php echo $post['artist'] ?> </p>
        </div>
        <div class = "votes">

          <i <?php if (userVoted($post['id'])): ?>
              class = "fas fa-heart vote-btn"
            <?php else: ?>
              class = "far fa-heart vote-btn"
            <?php endif ?>
            data-id = "<?php echo $post['id'] ?>" style = "color:#f44242">
          </i>

          <span class = "voteCount"><?php echo getVotes($post['id']); ?></span>
        </div>
      </div>
    </div>
    <?php endforeach ?>

  </div>

Javascript — voice.js — Обрабатывает обнаружение кликов и отправку ответа на voice.php.

$.ajax({
      url: 'index.php?page=community',
      method:'post',
      data: {
        'action':action,
        'post_id':post_id
      },
      success: function(data) {
        if (action == 'unvote') {
          $click_btn.toggleClass('far fas');
        } else if (action == 'vote') {
          $click_btn.toggleClass('far fas');
        }
      }
    });

PHP - voice.php - Обрабатывает серверную часть системы.

if (isset($_POST['action'])) {
    consoleLog();

    $post_id = $_POST['id'];
    $action = $_POST['action'];

    switch($action) {
      case 'vote':
        $query = "INSERT INTO rating_info (user_id, post_id, rating_action)
                VALUES ($user_id, $post_id, 'vote')
                ON DUPLICATE KEY UPDATE rating_action='vote'";
        break;
      case 'unvote':
        $query = "DELETE FROM rating_info WHERE user_id=$user_id AND post_id=$post_id";
        break;
      default:
        break;
    }

    mysqli_query($dbconnect, $query);
    echo getRating($post_id);
    exit(0);
  }

Что он должен делать, так это увеличивать или уменьшать количество голосов в базе данных mysql, устанавливая действие для голосования или отмены голосования, но файл js просто никогда не устанавливает данные действия, или PHP-скрипт никогда не может их поймать.

где вы вызвали функцию для запуска ajax

Festus Yuma 24.03.2019 22:26

Я вызвал функцию ajax из javascript, просто используя метод jquery '.on("click", function() {'

Zach W 24.03.2019 22:28
Стоит ли изучать PHP в 2026-2027 годах?
Стоит ли изучать PHP в 2026-2027 годах?
Привет всем, сегодня я хочу высказать свои соображения по поводу вопроса, который я уже много раз получал в своем сообществе: "Стоит ли изучать PHP в...
Symfony Station Communiqué - 7 июля 2023 г
Symfony Station Communiqué - 7 июля 2023 г
Это коммюнике первоначально появилось на Symfony Station .
Оживление вашего приложения Laravel: Понимание режима обслуживания
Оживление вашего приложения Laravel: Понимание режима обслуживания
Здравствуйте, разработчики! В сегодняшней статье мы рассмотрим важный аспект управления приложениями, который часто упускается из виду в суете...
Установка и настройка Nginx и PHP на Ubuntu-сервере
Установка и настройка Nginx и PHP на Ubuntu-сервере
В этот раз я сделаю руководство по установке и настройке nginx и php на Ubuntu OS.
Коллекции в Laravel более простым способом
Коллекции в Laravel более простым способом
Привет, читатели, сегодня мы узнаем о коллекциях. В Laravel коллекции - это способ манипулировать массивами и играть с массивами данных. Благодаря...
Как установить PHP на Mac
Как установить PHP на Mac
PHP - это популярный язык программирования, который используется для разработки веб-приложений. Если вы используете Mac и хотите разрабатывать...
1
2
40
1

Ответы 1

Вы передаете данные сообщения в javascript как post_id, но пытаетесь получить их в php-скрипте как $_POST['id']

Сделайте это вместо этого: $_POST['post_id']

Я изменил это, но видимых изменений в том, что происходит, не было. Это, вероятно, дало бы мне ошибку, если бы оператор if действительно выполнялся, так что это спасло меня от этого позже, но основная проблема все еще остается.

Zach W 24.03.2019 22:29

Вы уверены, что файл php file вызывается? подтвердите, что это правильный маршрут, указанный вами в вызове ajax

Odohi David 24.03.2019 22:35

Кажется, это сработало. Спасибо. Я должен быть в состоянии понять все остальное.

Zach W 24.03.2019 22:42

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