我正在使用mustache.js在模板中返回json数据,但是当我使用json响应创建$ .ajax帖子时,小胡子会返回先前的响应数据和新的响应数据。如何防止胡须拥有以前的数据并只返回一个响应?
脚本
$.ajax({ type: 'POST',
url: 'actions/addpost.php',
data: {wallid: wallid, postmessage: postmessage, files: files},
dataType: 'json',
encode: true
})
.done(function (data) {
var template = $('#template').html();
Mustache.parse(template); // optional, speeds up future uses
var rendered = Mustache.render(template, data);
$('#newpost').prepend(rendered);
});
模板
<script id="template" type="x-tmpl-mustache">
<div class="panel panel-white">
<div class="panel-heading">
<label>UserID: {{ userid }}</label>
<span class="help-block">{{ date_created }}</span>
</div>
<div class="panel-body">
<div class="well-white well-sm">{{ post_text }}</div>
</div>
<div class="panel-footer">
<div id="attachmentlist">
{{ #attachments }}
<p>{{ filename }} ({{ filetype }})</p>
{{ /attachments }}
</div>
<br>
<div class="comment-textarea">
<form name="commentform">
<div class="comment-box media">
<a id="comment-box-a" class="pull-left" href="#">
<img class="media-object" src="source/images/nophoto.png" alt="...">
</a>
<div class="media-body form-group">
<textarea id="comment-box-msg" name="postMessage" class="form-control" row="1" placeholder="Write a comment..."></textarea>
</div>
<button id="comment-box-btn-post" class="btn btn-primary btn-sm pull-right" aria-hidden="true" type="button">Δημοσίευση</button>
</div>
</form>
</div>
</div>
</div>
</script>
答案 0 :(得分:0)
你不应该使用:
$('#newpost').html(rendered);
而不是使用.prepend
?这将在旧的HTML之前添加新的HTML,而不是替换它。
编辑:聊天消息后,问题似乎不是来自Mustache,而是来自一个奇怪的多个PHP调用。胡子在这里看起来不错。