2010-06-25 54 views
1

我在页面上有多个表单,我试图使用jQuery form.js来保存发布的每个评论,然后将评论追加到UL之后。它的保存部分工作正常。但是,我无法正确地更新UL的评论。请参见下面的代码:如何将LI添加到使用jQuery的UL中forms.js

//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”,“评论”:“DS”}到位UL标签。我怎样才能得到它在LI中输出实际评论?

+0

你能提供一些样本输出或链接吗?我没有完全遵循你最后两句话。 – 2010-06-25 13:28:04

回答

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标签。

+0

我试了一下,它似乎仍然在输出数组,而不是实际将li添加到列表中。 – mike 2010-06-25 13:44:15

+0

对不起,我认为这是'目标:'ul','你需要删除的部分.. – Lukman 2010-06-25 13:46:28

+0

不,还有其他的东西是错的...我删除了目标:'ul',它仍然正确保存,但doesn将新评论添加到列表中。 hmmm .... – mike 2010-06-25 13:50:53