【问题标题】:AJAX like button in PHP PDO is not workingPHP PDO 中的类似 AJAX 的按钮不起作用
【发布时间】:2017-10-08 05:44:39
【问题描述】:

我正在通过 howcode 在 youtube 上关注一系列教程。它是关于建立一个社交网络。当谈到喜欢/评论时,他使用了一个 api。但是,这对我不起作用,我想使用普通的 ajax。我想提交一个类似的请求:

<form>
if (!DB::query('SELECT post_id FROM post_likes WHERE post_id=:postid AND user_id=:userid', array(':postid'=>$post['id'], ':userid'=>$userid))) {
               echo "<input type='submit' name='like' value='Like' data-id=".$post['id'].">";
    } else {
    echo "<input type='submit' name='unlike' value='Unlike' data-id=".$post['id'].">";
    }
    echo "<span>".$post['likes']." likes</span>
    </form>

到达这个 ajax:

   $('[data-id]').click(function() {
            var buttonid = $(this).attr('data-id');
            $.ajax({
                    type: "POST",
                    url: "index.php?postid=" + $(this).attr('data-id'),
                    processData: false,
                    //ScontentType: "application/json",
                    data: '',
                    success: function(r) {
                            console.log("hhhhhhhhhhhhhhhh")
                    },
                    error: function(r) {
                            console.log(r)
                    }
            });
    });

然后去这里:

if (isset($_GET['postid'])) {
     Post::likePost($_GET['postid'], $userid);
 }

【问题讨论】:

  • 我不知道我哪里出错了
  • 错误是什么?
  • jquery-1.11.1.min.js:2 Uncaught SyntaxError: Unexpected token ) at jquery-1.11.1.min.js:2 at Function.globalEval (jquery -1.11.1.min.js:2) 在文本脚本 (jquery-1.11.1.min.js:4) 在 PC (jquery-1.11.1.min.js:4) 在 x (jquery-1.11.1 .min.js:4) 在 b (jquery-1.11.1.min.js:4) 在 Object.send (jquery-1.11.1.min.js:4) 在 Function.ajax (jquery-1.11.1. min.js:4) 在 Function.m._evalUrl (jquery-1.11.1.min.js:4)
  • 您的选择器语法肯定是错误之一,因此您的点击功能将无法正常工作。
  • 你如何包含 jQuery 库?

标签: javascript php jquery ajax pdo


【解决方案1】:

您需要添加一个选择器,即类或 id。到要使用 jquery 选择器的元素,然后在该选择器上绑定事件。请检查以下代码更新。您还需要添加 preventDefault 方法来防止该选择器的原始事件。

<form>
    if (!DB::query('SELECT post_id FROM post_likes WHERE post_id=:postid AND user_id=:userid', array(':postid'=>$post['id'], ':userid'=>$userid))) {
          echo "<input class = "submit-class" type='submit' name='like' value='Like' data-id=".$post['id'].">";
    } else {
         echo "<input class = "submit-class" type='submit' name='unlike' value='Unlike' data-id=".$post['id'].">";
    }
    echo "<span>".$post['likes']." likes</span>
</form>

AJAX

$('.submit-class').click(function(e) {
    e.preventDefault();
      var buttonid = $(this).attr('data-id');
            $.ajax({
                    type: "POST",
                    url: "index.php?postid=" + $(this).attr('data-id'),
                    processData: false,
                    //ScontentType: "application/json",
                    data: '',
                    success: function(r) {
                            console.log("hhhhhhhhhhhhhhhh")
                    },
                    error: function(r) {
                            console.log(r)
                    }
            });
    });

【讨论】:

  • 我包含的 jquery 错误...现在没有错误...但是每次点击后页面仍然刷新
  • 您需要添加e.preventDefault();。确保将其更新为$('.submit-class').click(function(e) {
  • hhhhhhhhhh 现在出现了...所以它起作用了...现在将修改成功功能!谢谢!!!
  • 很高兴我能帮上忙
  • @JayBlanchard Ahh 对不起。我已经更新了答案,以后会记住这一点。
猜你喜欢
  • 2016-01-28
  • 1970-01-01
  • 1970-01-01
  • 2016-08-19
  • 1970-01-01
  • 2017-11-16
  • 2018-11-16
  • 1970-01-01
  • 2016-05-22
相关资源
最近更新 更多