2008-12-03 55 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