0

そうです、リターンキーでテキストエリアを送信できないという以前の問題を解決しましたが、新しい問題が発生しました。コメントをajax経由で送信し、最初のステータスで正常にロードします。どの投稿にコメントを追加しようとしても、アクションが実行されている投稿ではなく、ページの最初のステータスdivにコメントが追加されます。ただし、ページを更新すると、コメントが正しいステータスで表示されるため、正しいIDが送信されていることがわかり、間違った場所に追加されているだけですが、理由がわかりません。

私の送信コード:

$(function() {  
    $('textarea#scat').bind('keydown', function(e) {
        if(e.keyCode==13){
            var myClass = $(this).attr("class");  
            var comment = $("textarea." + myClass).val();  
            if (comment == "") {  
                return false;  
            }

            if (!$.trim($("textarea." + myClass).val())) {  
                return false;  
            }

            var cid = $("input.c_" + myClass).val();  
            var itemid = $("input.i_" + myClass).val();  
            var type = $("input.t_" + myClass).val();  
            var top = $("input.l_" + myClass).val();  

            var dataString = 'comment='+ comment + '&cid=' + cid + '&itemid=' + itemid + '&type=' + type;  

            $.ajax({  
                type: "POST",  
                url: "addcomment.php",  
                data: dataString,  
                success: function() {  
                    $('#c').load('ajax/querylc.php?oid=' + myClass); 
                    $("textarea." + myClass).val('');
                }  
            });  
        return false;  
        }
    });  
});  

私のajax/querylc.php(コメントをロードして上記のステータスに追加します)

$onuid = strip_tags(stripslashes(htmlentities(mysql_real_escape_string($_GET['oid']))));

  $re = ("SELECT * FROM (SELECT comment as comment, byuid as byuid, comuid as comuid, likes as likes, dislikes as dislikes, UNIX_TIMESTAMP(timestamp) as timestamp FROM mingle_comments WHERE onuid = '$onuid' AND type = 'status' ORDER BY timestamp DESC LIMIT 2) mingle_comments ORDER BY timestamp ASC") ; //query
   $result = mysql_query($re)  or die (mysql_error());
  if(mysql_num_rows($result) >= 2) {
        ?>
        <div id="sa" style="background:#E0E0E0; padding:5px 5px 5px 5px;">
            <a href="#" style="font-family:Arial; font-size:12px; color:#3a3a3a; text-decoration:none;">View all comments...</a>
        </div>
        <?php
    }

  while($st = mysql_fetch_assoc($result)) {
    $comment = $st['comment'];
    $by = $st['byuid'];
    $comuid = $st['comuid'];
    $time = $st['timestamp'];
    $l = $st['likes'];
    $d = $st['dislikes'];

    $bq = "SELECT * FROM users WHERE uid = '$by' LIMIT 1";
    $bqq = mysql_query($bq) or die (mysql_error());

    while($bqr = mysql_fetch_assoc($bqq)) {
        $dp = $bqr['dp'];
        $fbq = $bqr['fname'];
        $sbq = $bqr['sname'];
    }
    ?>

    <div id="commentbox" class="<?php echo $comuid; ?>" style="padding:5px 5px 5px 5px;">
        <div id="cbi" style=" display:inline; position:relative; ">
            <img src="<?php if ($dp == null) { echo 'img/unknown_user.jpg'; } else { echo "pf/" . $by . "/" . $dp; } ?>" width="36px" style=" display:inline; position:relative;"/>
        </div>
        <div id="cbt" style="position:relative; margin-left:32px; margin-top:-35px;">
            <a href="profile.php?uid=<?php echo $uid; ?>" style="position:relative; font-size:13px; margin-left:10px; font-family:Arial; color:#3a3a3a; text-decoration:none;"><?php echo $fbq . " " . $sbq; ?></a>
            <p class="<?php echo $comuid; ?>" style="position:relative; margin-left:5px;"><?php echo $comment; ?></p>
        </div>
        <div id="clb" style="background:#E0E0E0; padding-left:5px;">
            <a href="#">Like</a> <a href="#">Dislike</a> <a href="#" id="time"><?php echo time_since($time); ?></a>
        </div>
    </div>

<?php
}
?>

なぜこれが起こっているのか考えはありますか?:/また、リターンキーを押したままにすると、複数回送信されますが、それを防ぐ方法はありますか?

4

1 に答える 1

0

また、リターンキーを押したままにすると、複数回送信されますが、それを防ぐ方法はありますか?

キーダウンの代わりにキープレスイベントを使用する

$('#c').load('ajax/querylc.php?oid=' + myClass); 

「#c」セレクターは、IDが「c」の最初の要素を選択します。したがって、このIDを一意のID( "#c1"、 "#c2"など)として生成してみてください。

于 2012-06-25T09:06:12.253 に答える