如何使用jQuery forms.js将LI附加到UL

时间:2010-06-25 13:17:17

标签: php javascript jquery ajax json

我在页面上有多个表单,我正在尝试使用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中的实际注释?

1 个答案:

答案 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标记的配置。