我创建了一个评论 - 回复系统,使用php和jquery。我的代码包含一个注释函数,然后使用jquery我试图获取comments_id,这是每个注释和回复的id,并保存一个名为comments_reply的表。我唯一的问题是我无法获得comments_id,但我可以成功获得回复并将其存储在comments_reply表中。知道为什么我的代码无法获取comments_id来存储它吗?
这是我在php中的功能,包括jquery:
<?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') ");
?>
答案 0 :(得分: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
更改为data-comment-id
,将reply
更改为data-reply
,以便提供常规和可能有用的html5支持,并且不要忘记更新所有用法(在html和javscript代码)。
我还注意到你的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将包含不需要的字符。