Mustache使用new返回以前的数据

时间:2014-06-25 07:15:34

标签: javascript json mustache

我正在使用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>

1 个答案:

答案 0 :(得分:0)

你不应该使用:

$('#newpost').html(rendered);

而不是使用.prepend?这将在旧的HTML之前添加新的HTML,而不是替换它。

编辑:聊天消息后,问题似乎不是来自Mustache,而是来自一个奇怪的多个PHP调用。胡子在这里看起来不错。