Как добавить LI в UL с помощью jQuery forms.js - PullRequest
1 голос
/ 25 июня 2010

У меня есть несколько форм на странице, и я пытаюсь использовать 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 Ответ

1 голос
/ 25 июня 2010

Изменение:

$('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 напрямую вводить ответ в тег UL.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...