我在一个页面上有多个表单,我尝试使用 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 中输出实际的注释?
最佳答案
更改:
$('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"
相同.
编辑:哦,还有,删除 target: 'ul',
..该配置告诉 ajaxForm 将响应直接注入(inject)到 UL 标记中。
关于php - 如何使用 jQuery forms.js 将 LI 附加到 UL,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3118273/