jquery - 通过页面上的onclick方法保存更改的文本重新加载不起作用

时间:2016-07-19 07:44:01

标签: php jquery html ajax

我正致力于添加我网站的最爱功能,每件事情都运转良好 当我点击add to favourites button时,ajax调用会在数据库中插入该数据并将按钮文本更改为“从收藏夹中移除”'

现在问题是当我重新加载页面时,它再次将按钮文本重置为“添加到收藏夹”。以前被标记为最爱。

我的代码是

<button  class='btn btn-sm btn-info favourite_feature'  value="<?php echo $id;?>">add to favourite</button>  

JQUERY

$(".favourite_feature").click(function(){
    var _this = $(this);
    var postid = _this.val();
    $.ajax({
        type     : 'POST',
        url      : 'add_to_favourite.php',
        dataType : 'json',
        data     : {course_id : postid},
        success  : function(response){
            console.log(response);
            if(response.error_type == 'no error'){
                alert('done');
                (_this).html(_this.html()=='add to favourite' ? 'remove from favourites' : 'add to favourite');
            }else{
                if(response.error_type == 'login'){
                    $('#myModal').modal('show');
                }
            }
        }
    });
});  

编辑:添加服务器端代码

<?php
    session_start();
    include 'includes/dbconfig.php';
    if(!isset($_SESSION['google_data'])){
        $response = array('success' => 0, 'error_type' => 'login'); 
        echo json_encode($response);
    }else{
        $id = $_SESSION['id'];
        $c_id = $_POST['course_id'];
        $_SESSION['course_id']=$c_id;
        $u_email = $_SESSION['google_data']['email'];
        $check_favourites = "SELECT * from favourites_table where user_id = '$id' and course_id = '$c_id'";
        $check_favourites_query = mysqli_query($conn,$check_favourites) or die(mysqli_error($conn));
        $check_favourites_result = mysqli_fetch_array($check_favourites_query);
        if($check_favourites_result){
            $del = "DELETE FROM favourites_table where user_id = '$id' and course_id = '$c_id'";
            $del_favourites = mysqli_query($conn,$del) or die(mysqli_error($conn));
        }else{
            $insert_query = "INSERT INTO favourites_table(course_id,user_id,user_email) VALUES('$c_id','$id','$u_email')";
            mysqli_query($conn,$insert_query);
        }
        $response = array('success' => 1, 'error_type' => 'no error'); 
        echo json_encode($response);
    }
?>

1 个答案:

答案 0 :(得分:2)

在服务器端,您需要在呈现按钮之前检查项目当前是否已添加到收藏夹,并正确设置文本。

我不知道你的数据结构,但是假设在PHP中你可以根据数据库字段定义一个布尔变量$isFavourite,该数据库字段针对有问题的项目存储(可能是由{定义的相同项目) {1}}在您提供的代码段中。

所以你要做的就是将标记更改为:

$id