如何修复jQuery Ajax不将数据发送到PHP文件

时间:2019-03-24 21:18:11

标签: php jquery ajax

我正在尝试使系统类似于点赞/不喜欢的系统。我已经完成所有设置,但是我的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-表决.js-处理点击检测并将响应发送到表决.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-选民.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脚本无法捕获该数据。

1 个答案:

答案 0 :(得分:0)

您正在将JavaScript中的帖子数据作为post_id传递,但尝试在php脚本中以$_POST['id']的形式获取帖子数据

相反,请执行以下操作:$_POST['post_id']