我在页面上有多个表单,我正在尝试使用jQuery form.js保存发布的每个评论,然后将评论附加到UL。它的保存部分工作正常。但是,我无法正确地获得评论以更新UL。请参阅以下代码:
//My Form
<form method="post" action="includes/answer.php" id="respond">
<input name="key_id" id="key_id" type="hidden" value="'.$row['thekey'].'" />
<textarea name="comment" id="comment"></textarea>
</form>
//The UL
<ul id="'.$row['thekey'].'" class="answer"></ul>
//The jQuery
$(document).ready(function() {
jQuery('form').ajaxForm({
target: 'ul',
success: function(data) {
$('ul#' + data.id).prepend("<li style='display:none'>"+data.comment+"</li>").fadeIn('slow');
$("ul#" + data.id +"li:first").fadeIn();
}
});
});
//Postback Code
$message = strip_tags(mysql_real_escape_string($_POST['comment']));
$id = strip_tags(mysql_real_escape_string($_POST['key_id']));
$sql_id = 'SELECT id FROM questions WHERE thekey = "'.$id.'"';
$select_result = mysql_query($sql_id);
if($select_result) {
$row = mysql_fetch_array($select_result);
$sql = 'INSERT INTO answers (answer, question_id) VALUES("'.$message.'", '.$row['id'].')';
$result = mysql_query($sql);
if($result) {
print json_encode(array("id" => $id, "comment" => $message));
}
}
这当前输出的数组看起来像{“id”:“sadfasdf2”,“comment”:“ds”}代替ul标签。如何让它输出LI中的实际注释?
答案 0 :(得分:1)
变化:
$('ul#' + data.id).prepend("<li style='display:none'>"+data.comment+"</li>").fadeIn('slow');
为:
$('ul#' + data.id).prepend($("<li></li>").text(data.comment).hide()).fadeIn('slow');
一点解释:
$("<li></li>")
是您创建新元素的方式。然后,您可以在该元素.text(content)
上设置内容(.html(htmlcode)
也可以)。 .hide()
与style="display:none"
相同。
编辑:owh并删除target: 'ul',
..这是告诉ajaxForm直接将响应注入UL标记的配置。