Javascript函数无法正常运行

时间:2014-04-06 17:00:51

标签: javascript php html

好的,我有点问题。 我有一个javascript / DOM脚本,通过ajax将用户评论提交到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" 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的表单。

1 个答案:

答案 0 :(得分:1)

如果您已经在使用JQuery - 为什么不将提交按钮绑定到JQuery的.click()处理程序而不是在HTML本身中对其进行硬编码?

(请注意,我假设您的AJAX功能用于删除评论是&#34; removecomment.php&#34;)

更新了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;
});