自从我听说它以来,我一直在使用JSON处理AJAX功能,因为使用RJS /呈现HTML“感觉”错误,因为它违反了MVC。我工作的第一个AJAX项目最终以20-30个控制器操作直接绑定到特定的UI行为,我的视图代码遍布控制器操作,部分和rjs文件。使用JSON允许您在视图中保留特定于视图的代码,并且只能通过AJAX查看agnostic/RESTful控制器操作来获取所需数据。通过JSON/AJAX更新HTML
我从使用纯JSON发现的一个令人头痛的问题是,您必须通过JS'呈现'HTML,这对于需要更新DOM重元素的AJAX来说可能是一个真正的痛苦。我最终得到长字符串的构建代码,如
// ...ajax
success: function(records){
$(records).each(function(record){
var html = ('<div id="blah">' + record.attr +
etc +
')
})
}
其中etc是根据记录数据动态构建HTML的10-15行。除了烦恼外,更严重的缺点是HTML结构的重复(在模板和JS中)。*这种方法是否有更好的做法?
(我为终于伸手动机是我现在有更新HTML如此复杂,它需要Ruby代码的两个嵌套循环首先进行渲染。复制在Javascript中似乎疯狂的任务。)
- 我考虑的一件事是直接从文件系统加载静态部分文件,但这似乎有点多。
这仍然有点混乱,你必须在Javascript中包含布局。我非常喜欢John Resig在其他答案中的模板,这些答案非常清楚(大部分)将用户界面和控制器分开。很好,如果Jaml为你工作:) – Jaanus 2010-01-22 00:28:53