2014-04-06 202 views
0

好的,所以我有一些小問題。 我有一個JavaScript/DOM腳本,通過ajax提交用戶評論到一個php頁面,並且在那裏它非常出色。Javascript功能不能正常工作

但現在我需要在另一頁上實現它,稍有不同。並且不能縫合以使其工作。如果有人能幫我指出我的錯誤,將不勝感激。

HTML部分:

<form name="comment-form-<?php echo $comment['comment_id'];?>" id="comment-form-<?php echo $comment['comment_id'];?>" method="POST"> 
    <div id="comments-approval"> 
     <h1><?php echo $article['naslov'];?></h1> 
     <h2><?php echo $comment['comment_text'];?></h2> 
     <h3>[<?php echo date('d\. m\. Y\. H:i', $comment['comment_time']);?>] --- [ <?php echo $comment['comment_name'];?> ]</h3> 
    </div> 
    <input type="hidden" name="article_id" id="article_id" value="<?php echo $comment['comment_article_id'];?>" /> 
    <input type="submit" value="&#x2717;" onclick="remove_comment('comment-form-<?php echo $comment['comment_id'];?>'); return false;" /> <!-- IKS --> 
    <input type="submit" value="&#10004;" onclick="add_comment('comment-form-<?php echo $comment['comment_id'];?>'); return false;" /> <!-- OTKACENO --> 
</form> 

的PHP的foreach有N個數量的形式創建後,和各種形式都有它自己獨特的ID

按鈕上主持人的點擊和調用後函數ether ADD或REMOVE,它們通過按鈕所在的表單ID發送。

JavaScript部分:

function add_comment(formid){ 

    var target = String('"#'+formid+'"'); 

    $(target).submit(function(){ 


     $.ajax({ 

     type: "POST", 
     url: "approvecomment.php", 
     data: $(this).serialize(), 
     dataType: 'text', 

      success: function(msg){ 
      switch(msg) { 

        //message 
       } 
      } 
     }); 
     return false; 
     }); 

} 

我知道,也許這是一個愚蠢的錯誤,但我真的沒有什麼線索,我做錯了。

編輯:

JavaScript部分:

function add_comment(formid){ 

    var target = '#'+formid; 

    alert(target); 

    $(target).submit(function(){ 

     alert($(this).serialize()); 


     $.ajax({ 

     type: "POST", 
     url: "approvecomment.php", 
     data: $(this).serialize(), 
     dataType: 'text', 

      success: function(msg){ 
      switch(msg) { 

        //message 
       } 
      } 
     }); 
     return false; 
    }); 

} 

好了,第一次警報的帖子#comment-form-1

而第二什麼都不做。

以及ID爲comment-form-1的表單存在於文檔中。

+0

請提供實際問題。你得到一個JS錯誤?它是否通過ajax打開文件,但沒有返回?......等。花幾分鐘調試你的代碼,然後包含這些結果。 – Dave

+0

問題是該功能未進入SUBMIT部分。只需跳過它並刷新表單即可。我已經做了一個檢查步驟,只是一個簡單的alert(),當它進入該部分時,但沒有。 – Vladimir

+1

@Vladimir - 從症狀它聽起來像一個Javascript錯誤的地方。一定要檢查你的控制檯是否有錯誤。 –

回答

1

如果您已經在使用JQuery--爲什麼不直接將提交按鈕綁定到JQuery的.click()處理程序,而不是將其硬編碼到HTML本身中?

(請注意,我假設你的AJAX功能刪除註釋是 「removecomment.php」)

更新HTML:

<form name="comment-form-<?php echo $comment['comment_id'];?>" id="comment-form-<?php echo $comment['comment_id'];?>" method="POST"> 
<div id="comments-approval"> 
    <h1><?php echo $article['naslov'];?></h1> 
    <h2><?php echo $comment['comment_text'];?></h2> 
    <h3>[<?php echo date('d\. m\. Y\. H:i', $comment['comment_time']);?>] --- [ <?php echo $comment['comment_name'];?> ]</h3> 
</div> 
<input type="hidden" name="article_id" id="article_id" value="<?php echo $comment['comment_article_id'];?>" /> 
<input type="submit" class="comment-remove" value="&#x2717;" /> <!-- IKS --> 
<input type="submit" class="comment-add" value="&#10004;" /> <!-- OTKACENO --> 

更新JS:

//COMMENT ADD CLICK HANDLER 
$("input.comment-add").click(function() {   
    $.ajax({ 
     type: "POST", 
     url: "approvecomment.php", 
     data: $(this).parent().serialize(), 
     dataType: 'text', 
     success: function(msg){ 
      switch(msg) { 
       //message 
      } 
     } 
    }); 
    return false; 
}); 

//COMMENT REMOVE CLICK HANDLER 
$("input.comment-remove").click(function() {   
    $.ajax({ 
     type: "POST", 
     url: "removecomment.php", 
     data: $(this).parent().serialize(), 
     dataType: 'text', 
     success: function(msg){ 
      switch(msg) { 
       //message 
      } 
     } 
    }); 
    return false; 
});