"Like"系统 PHP,使用 AJAX



我想用PHP和jQuery/AJAX制作类似/不像系统。

这是我在 PHP foreach 中的表单...在这里,我为每个表格都有自己的 id;

<?php foreach ($vid as $var) { ?>
<form class="classform" action="functions/videolike.php" method="post">
    <input type="text" name="id" value="<?php echo $var['video_id'];?>">
    <button class="submitbuttonclass"type="submit">Like</button>
</form> 
<?php } ?>

这是我的 Ajax 脚本;

<script>
// this is the id of the submit button
$(".submitbuttonclass").click(function() {
    $.ajax({
         type: 'post',
         url: "functions/videolike.php",
         data: $(".classform").serialize(), // serializes the form's elements.
         success: function(data)
         {
             alert(data); // show response from the php script.
         }
    });
    return false; // avoid to execute the actual submit of the form.
});
</script>
  1. 代码有效但不正确;
  2. 当我单击"喜欢"按钮工作正常时,我检查了数据库,嘲讽,插入,删除,工作正常......
  3. 但是我想用 AJAX 来做到这一点,如果用户单击喜欢按钮,刷新页面会在用户观看视频时停止视频。视频正在预加载,因为页面刷新...
  4. 添加我的 ajax 脚本后,它可以工作。但是当我点击喜欢按钮时,AJAX 正在发布到 PHP,只有 foreach 循环中的最后一个 id,

问题?如何使 AJAX 获取 PHP 中所有 id 的 foreach 循环?

这是我的视频.php如果你想检查的话;

<?php
session_start();
if($_POST['id'] && @$_SESSION["userid"]){
    require_once "connectdb.php";
    $id = $_POST["id"];

$VLcheck = "SELECT count(*) FROM `videolikes` WHERE user_id = ? AND liked_vid_id=?"; 
$reslike = $conn->prepare($VLcheck); 
$reslike->execute(array($_SESSION["userid"],$id));
$VLrow = $reslike->fetchColumn();
echo $VLrow;
if ($VLrow > 0){
    $VLcheck = "DELETE FROM `videolikes` WHERE user_id = ? AND liked_vid_id=?"; 
    $reslike = $conn->prepare($VLcheck); 
    $reslike->execute(array($_SESSION["userid"],$id));
} else {
    $curentsess= $_SESSION["userid"];
    $INSlike = $conn->prepare("INSERT INTO videolikes(user_id, liked_vid_id)
        VALUES('$curentsess','$id')");
    $INSlike->execute();

}} else {die;}  
?>

由于类 .classform 有很多表单,那么您认为您的脚本应该如何选择合适的表单?

asnwer 是 - 脚本不能,你应该帮助它(。使用.closest函数查找单击按钮的最接近<form>

$(".submitbuttonclass").click(function() {
    var form = $(this).closest("form");
    // or find closest element with class `classform`
    //var form = $(this).closest(".classform");
    $.ajax({
         type: 'post',
         url: "functions/videolike.php",
         data: form.serialize(), // serializes the form's elements.
         success: function(data)
         {
             alert(data); // show response from the php script.
         }
    });
    return false; // avoid to execute the actual submit of the form.
});

最新更新