2014-04-06 148 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; 
});