Как преобразовать ответ Ajax в HTML - PullRequest
3 голосов
/ 12 января 2012

У меня есть страница профиля, где пользователь может загружать свои комментарии.

Код, который загружает комментарии в json

$('#profile-comment .stream-more-link').click(function (e) {
    e.preventDefault();
    //Increment stream page
    streamPage++;
    //Get post data in json
    $.ajax({
        url : "/profile/comments",
        dataType: "json",
        data: {"page":streamPage},
        success: function(response) {
            if (response.length > 0) {
                $('#commentTmpl').tmpl(response).appendTo('.stream-items');
            } else {
                $('.stream-more').hide();
            }
        }
    })
    return false;
});

Шаблон jQuery

<script type="text/x-jquery-tmpl" id="commentTmpl">
    <div class="stream-item">
        {{if post.length}}
        <div class="article-title">
            <a class="article-title-link" href="${post.titleLink}">${post.title}</a>
        </div>
        {{/if}}
        <div class="comment level-1" id="c${comment.id}">
            <div class="comment-wrap">
                <div class="comment-img">
                    <img src="${user.foto}" width="48px" height="48px" alt="имя профиля" />
                </div>
                <div class="comment-content">
                    <a class="author" href="${user.link}">${user.name}</a>
                    <div class="text">
                        <p>${comment.content}</p>
                    </div>
                    <div class="meta">
                        ${comment.date}
                    </div>
                </div>
            </div>
        </div>
    </div>
</script>

Пример ответа JSON отchrome json Предварительный просмотр:

8: {post:[],…}
comment: {id:46298, content:<i>проверка</i>, на то как<b> </b><b><i>работает</i></b><b> </b>очистка.<br>,…}
content: "<i>проверка</i>, на то как<b> </b><b><i>работает</i></b><b> </b>очистка.<br>"
date: "20.09.2011 02:22"
id: "46298"
post: []
user: {name:moderator, link:/profile/view/username/moderator,…}
foto: "/files/user/fotos/thumb/default.jpg"
link: "/profile/view/username/moderator"
name: "moderator"
9: {post:[], comment:{id:46303,…}, user:{name:moderator, link:/profile/view/username/moderator,…}}
comment: {id:46303,…}
content: "Содержимое с <b>HTML</b>-<i>разметкой <img src="/files/emoticons/love.gif" alt="love" title="love" /><br></i>"
date: "20.09.2011 02:19"
id: "46303"
post: []
user: {name:moderator, link:/profile/view/username/moderator,…}
foto: "/files/user/fotos/thumb/default.jpg"
link: "/profile/view/username/moderator"
name: "moderator"

И содержание комментариев не оценивается в html, только строка.

1 Ответ

1 голос
/ 12 января 2012

Если мы хотим получить html в шаблоне, мы должны использовать это построение {{html varName}}

Подробнее об этом

http://api.jquery.com/template-tag-html/

...