1

php と jquery を使用してコメント返信システムを作成しました。私のコードにはコメント用の関数が含まれており、jquery を使用して、各コメントと返信の ID である comments_id を取得し、comments_reply というテーブルに保存しようとしています。私の唯一の問題は、comments_id を取得できないことですが、返信を正常に取得して、comments_reply テーブルに保存できます。私のコードがcomments_idを取得して保存できない理由は何ですか?

これは、jquery を含む php の私の関数です。

<?php

<script>

$(document).ready(function(){   
$('.reply').keyup(function(e){
    if(e.keyCode == 13){
        var comments_id = $(this).attr('comments_id');
        var reply = $(this).val();
        $.post('reply.php', {comments_id:comments_id, reply:reply});  
        $('.reply').val('');    
    }

});

});

</script>


function getComments(){

$comments = "";

$sql = mysql_query("SELECT * FROM comments ORDER BY comment_date DESC ") or die (mysql_error());

if(mysql_num_rows($sql) == 0){
    $comments = " <div class='each_comment'> There are no comments ...</div> ";
}
else
{
  while ($row= mysql_fetch_assoc($sql)){        

$comments .= "User Says : <div class='each_comment'> ".$row['comment_date']."".$row['comment']."

<input type='text' class='reply' comments_id='<?php ".$row['comments_id']." ?>' />

    </div> "; 
  }
 }
   return $comments;  
}
?>

そして、これは私のページです:reply.php

<?php

$comments_id = $_POST['comments_id'];

$reply = $_POST['reply'];


mysql_query("INSERT INTO comments_reply VALUES ('', '$comments_id', '$reply') "); 

?>
4

1 に答える 1

0

サーバーに送信するときに値とプロパティ名 (まったく同じ) を混同しないようにするには、名前に引用符を追加する必要があります。

$('.reply').keyup(function(e){
    if(e.keyCode == 13){
        var comments_id = $(this).attr('comments_id');
        var reply = $(this).val();
        $.post('reply.php', {"comments_id":comments_id, "reply":reply});  
        $('.reply').val('');    
    }

});

それはあなたの問題を解決するかもしれません

編集

カスタム html 属性名も次のように変更します。

comments_id慣例とおそらく便利な html5 サポートのために todata-comment-idreplytoを変更し、data-replyすべての使用法 (html と javascript コード) を更新することを忘れないでください。

また、テーブルの最初の列に空白の値を挿入していることをSQL コードが示していることにも気付きVALUES ('', '$comments_id', '$reply')ましたが、これには理由がありますか?

EDIT2

人々がこの回答のコメントを読む代わりに回答が何であったかを見るとき、私はそれをここに置きます:

交換

<input type='text' class='reply' comments_id='<?php ".$row['comments_id']." ?>' />

<input type='text' class='reply' comments_id='{$row['comments_id']}' /> 

そうしないと、ID に不要な文字が含まれます。

于 2013-08-08T12:22:24.750 に答える