注释系统的Ajax POST问题

时间:2014-01-15 05:23:35

标签: ajax forms

我差不多2年前下载了一个php / ajax评论脚本,从第一天开始就遇到了这个小问题。我试图联系作者,但他无处可寻。

有时当我点击“发送”按钮时,该按钮会保持禁用状态,并且根本不会发生任何事情。它只是继续显示动画的忙碌图片。我根本没有收到任何错误消息。

我想知道你们中的任何一位专业人士是否可以帮助我?

以下是相关代码:

<div class="comment_heading">Leave a Comment</div>
<div class="post_comment">
<textarea name="txtpostcomment" id="txtpostcomment-'.$postid.'" class="txtpostcomment"></textarea>
<button class="btnpostcomment" id="btnpostcomment-'.$postid.'" onclick="comment('.$postid.');" type="button">Send</button>
<input type="hidden" name="token" id="token" value="'.$_SESSION['token'].'">
<script>document.getElementById("txtpostcomment-'.$postid.'").focus();</script>
</div>

comment = function(postid1)
{
    var txt =  $('#txtpostcomment-'+postid1);
    var btn =  $('#btnpostcomment-'+postid1);

    var comment1 = $(txt).val();
    var token = $("#token").val();

    $(btn).css('background-image', 'url(/comments/submit-busy.gif)');
    $(btn).attr('disabled', true);

    $.post("/comments/submit.php",{commenting:1, postid:postid1, comment: comment1, name: name, token: token},
    function(msg)
    {
        if(msg.status)
        {
            $('.post_comment .error_msg').remove();
            $('.comment-list-'+postid1).prepend(msg.html);
            $(txt).val('');
            $('.comChars').empty();
        }
        else
        {
            $('.post_comment .error_msg').remove();
            $('.error_msg').clone().appendTo('.post_comment');
            $('.error_msg:last').append(msg.error);
        }

        $(btn).css('background-image', 'none');
        $(btn).attr('disabled', false);
        $(txt).attr('disabled', false);

    },'json');
}

1 个答案:

答案 0 :(得分:1)

如果Ajax请求失败(由于网络断开,服务器错误等),您的代码似乎没有检查错误情况。检查你的javascript控制台是否有任何js错误。由于它使用$.post,您可能希望扩展代码以添加错误处理,如果您使用的jQuery版本支持它。或者,使用$.ajax。有关详细信息,请参阅http://api.jquery.com/jquery.posthttp://api.jquery.com/jquery.ajax