2017-05-08 59 views
1

我要讓喜歡/不象系統,PHP和jQuery/AJAX ..「贊」系統PHP,使用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. 當我點擊「喜歡」按鈕工作良好,我cheked的數據庫,caunting,插入,刪除,工作好...
  3. 但我想使這與AJAX becouse,刷新頁面停止視頻時用戶在觀看視頻時是否點擊了類似按鈕。視頻預加載becouse頁面刷新...
  4. 我添加我的ajax腳本的工作。但是當我點擊像按鈕時,AJAX發佈到PHP,只有最後一個id在foreach循環中,

問題? 如何使AJAX獲得所有在PHP foreach循環中的id?

這是我的videolike.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;} 
?> 
+0

嘗試通過改變'.click'聽者停止瀏覽器默認的執行和功能開始這樣的:(」。classform‘)'$在(’。 (){e.preventDefault(); [...其餘函數]});'(也可以使用$(this).serialize()'而不是'$( '.class')。serialize()')我想你錯過了停止默認執行​​,所以你得到服務器端的結果不是來自'$ .ajax()'函數的結果。另外,你提到一個PHP foreach()循環。但是,在你的例子中沒有。 – Nukeface

回答

1

當你有.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. 
}); 
+0

謝謝你的回覆u_mulder我現在就試試吧.. –

+0

我試了一下......當我點擊** LIKE **按鈕只是瞄準我的功能/ videolike.php ..如何停止這個定位 –

+0

我想你有javascript錯誤。檢查開發者控制檯中有什麼問題。 –