我有一个页面,加载后调用Document.ready jQuery脚本,该脚本使用今天的日期作为输入,向PHP脚本发送一个AJAX请求,以查询数据库中包含该日期的任何“条目”。如果找到,则将它们添加到一个数组中,然后对其进行JSON编码并返回给jQuery脚本,然后在for循环中,该脚本使用JSRender模板为每个“条目”输出一个<div>。这些<div>驻留在表单中。
有一个创建新“条目”的按钮,当按下它时,它只是克隆最后一个“条目”,清除它,给输入数组(输入name="TInew1")一个新的索引( 'new1‘位),并将其附加到最后一个(在表单中)。当提交表单时,会发出另一个AJAX请求来写入/更新数据库。
我不太明白的是,当创建了一个新条目时,如何重新加载该表单,以便它获得当前条目以及具有正确id的新条目,就像表单目前提交的那样,但当然不会刷新,因此条目仍然具有"newx“id,而不是现在写入数据库时分配给它们的id。
<form>
<div id="empty-for-jsrender-output">
</div>
<script (template for jsrender)></script>
</form>
<script src="get-entries"></script>
// get-scripts
calls ajax with var for current date
returns json array
for each nested array, calls jsrender script, which spits out a div block per entry within #empty-for-jsrender-output那么,在我使用新条目提交表单之后,如何像第一次加载页面那样重新加载表单或#empty- for -jsrender-output呢?
对不起,编辑,忘记添加我已经在ajax.done部分的提交条目js脚本中尝试过了:
$.getScript("assets/js/getEntries.js");尝试再次运行在实际重新加载页面时运行的同一脚本(正常工作)。但是所有这一切都是空的,div...it不会再次填充它。
发布于 2016-05-30 03:09:27
我不会尝试提出如何做到这一点的细节-因为它涉及到特定的应用程序选择。
但就整体方法而言,我建议您使用JsViews,而不仅仅是JsRender,这样您就可以通过可观察到的数据更改和数据绑定获得UI的增量更新。
然后,对于您的AJAX场景,一个很好的方法是使用JsRender/JsViews中新的编译视图模型特性,并在获得从第二个和后续AJAX请求返回的更新后的JSON数据时对数据调用merge()方法。
以下是一些文档链接:
https://stackoverflow.com/questions/37351409
复制相似问题