我正在尝试制作一个AJAXy提交,并将结果部分插入到我的列表中的适当位置。我可以想到几个选项,但没有一个是非常好的:
选项1:返回JSON,在Javascript中进行渲染。这似乎是渲染它的错误位置,尤其是因为列表本身是在我的应用程序服务器中呈现的。但是,它的好处是可以轻松访问要排序的值(response.full_name
)。
选项2:返回HTML片段,解析排序值。在Javascript中解析HTML可能比渲染它更糟糕。
选项3:返回一个HTML片段,该片段还包含要评估的<script>
部分。这可以将DOM节点添加到主列表,然后进行JS调用以在正确的位置插入自己。这里的缺点是IE在<script>
或innerHTML
被调用时不评估appendChild
标签。
答案 0 :(得分:2)
我个人会做#1。将服务器端生成的HTML与客户端生成的HTML组合起来没有任何问题,但如果它是一个复杂的过程,最好将它保存在一个位置(在您的情况下在服务器上)。因此,您可能希望返回(作为JSON)两个值:排序值和HTML片段。
之后很简单:找到位置,实例化片段(例如,使用dojo.html.set()),并将其放在dojo.place()。或者直接就地实例化。