2008-12-03 75 views
1

我正在尝试进行AJAXy提交,并将得到的部分插入到适当位置的列表中。我可以想到几个选项,但没有一个是非常好的:如何在有序列表中插入DOM元素(在Dojo中)?

选项1:返回JSON,使用Javascript进行渲染。这似乎是错误的地方,尤其是因为列表本身在我的应用程序服务器中呈现。不过,它的好处是可以轻松访问要排序的值(response.full_name)。

选项2:返回HTML片段,解析出排序值。在Javascript中解析HTML可能比渲染更糟糕。

选项3:返回一个也包含<script>部分并被评估的HTML片段。这可以将DOM节点添加到主列表中,然后进行JS调用以将其自身插入到正确的位置。这里的缺点是,当调用innerHTMLappendChild时,IE不会评估<script>标签。

回答

2

我个人会做#1。将服务器端生成的HTML与客户端生成的HTML结合起来没有什么问题,但如果它是一个复杂的过程,最好将它保存在一个地方(在您的案例中的服务器上)。所以你可能想要返回(作为JSON)两个值:排序值和HTML片段。

之后,它很简单:找到位置,实例化片段(例如,使用dojo.html.set()),并将其与dojo.place()放置在一起。或者直接就地实例化它。

+0

渲染_was_相当复杂,所以我确实在服务器上生成了HTML并将其包含在JSON对象中。 – 2010-01-13 22:39:37