在jquery和attr + ajax

时间:2016-08-21 09:32:52

标签: php ajax

首先让我告诉你代码

这是脚本

        var user_id = $(this).attr("id");
        var datastring = 'user_two='+ user_id;
        $(".follow").click(function(){
            $.ajax({
                type: "POST",
                url: "include.php",
                data: datastring,
                success: function(html){}
            });
            $("#follow"+user_id).hide();
            $("#unfollow"+user_id).show();
            return false;
        });

这是php

<?php 
    $query = $handler->query("SELECT * FROM users");
    while ($row = $query->fetch()) {
        $user_two = $row['id'];
        $user_one = 1;
        ?>
        <p><?php echo $row['username'];?></p>

        <?php 
            $follow_check = $handler->query("SELECT * FROM follow WHERE user_one='$user_one' AND user_two='$user_two'");
            if ($follow_check->rowCount() == 0) {?>
                <div id="follow<?php echo $user_one;?>">
                    <a href="" class="follow" id="<?php echo $user_two;?>">Follow</a>
                </div>
                <div id="unfollow<?php echo $user_one;?>" style='display:none'>
                    <a href="" class="unfollow" id="<?php echo $user_two;?>">Following</a>
                </div>
            <?php }else{?>
                    <div id="follow<?php echo $user_one;?>" style='display:none'>
                    <a href="" class="follow" id="<?php echo $user_two;?>">Follow</a>
                </div>
                <div id="unfollow<?php echo $user_one;?>" >
                    <a href="" class="unfollow" id="<?php echo $user_two;?>">Following</a>
                </div>

            <?php } ?>

 <?php } ?>

这是插入查询的php

<?php
include('db.php');
$user_two = $_POST['user_two'];
$query = $handler->query("INSERT INTO follow (user_one,user_two) VALUES ('1','$user_two')");

?> 

我需要插入两件事,即user_one = Session = 0或当前登录的用户,但我只是将其设为静态的平均时间和user_two,即用户ID或您将点击后跟随的那个人。但是idk如何在ajax中做到这一点,就像在php中你可以得到像<a href="?id=">这样的链接的价值,然后得到价值,$ _GET [&#39; id&#39;]但idk如何存储该值为脚本

我只需要解释user_id = $(this).attr(&#34; id&#34;); 并在$(".follow").click内返回false,当我将其设为false时,我需要刷新页面,只是为了看到链接的变化,以及为什么会这样? 顺便说一句,当我点击跟随链接时,它将成功插入到数据库,但user_two的值始终为0,因为我不知道如何将链接ID存储到脚本。

1 个答案:

答案 0 :(得分:0)

不是100%肯定我是否理解但让我尝试:

首先:id="<?php echo $user_id; ?>"没关系。 您可以使用var user_id = $(this).attr("id");获取它 也许你应该在$(“。follow”)... block

中移动这一行
$(".follow").click(function() {
    var user_id = $(this).attr("id"); //"this" will refer the element with the "follow" class. Then user_id will be the value of the id for the clicked element.
    $.ajax({
      type: "POST",
      url: "include.php",
      data: {user_two: user_id}
    }).done(function(data) {
       data = JSON.parse(data);
       if(data.msg) {
        //everything is ok
        $("#follow"+user_id).hide();
        $("#unfollow"+user_id).show();
       } else {
         //handle the error
       }
    )}
 });

PHP部分:

<?php

include('db.php');
$user_two = $_POST['user_two'];
$query = $handler->query("INSERT INTO follow (user_one,user_two) VALUES ('1','$user_two')");
if($query) { //check if query ran successfully
 echo json_encode(array("msg" => 1)); 1 for success
} else {
 echo json_encode(array("msg" => 2)); 2 for error
}
?>

至于“ajax中的返回错误”:  .follow - &gt;定位标签。单击标记会使浏览器导航到href =“”中指定的URL。 return false会禁用此行为,因为您不需要刷新页面或转到其他页面:)