我想用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>
- 代码有效但不正确;
- 当我单击"喜欢"按钮工作正常时,我检查了数据库,嘲讽,插入,删除,工作正常......
- 但是我想用 AJAX 来做到这一点,如果用户单击喜欢按钮,刷新页面会在用户观看视频时停止视频。视频正在预加载,因为页面刷新...
- 添加我的 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.
});