0

我正在更新一个 Coldfusion8/MySql 站点,其中包含从“意大利面条到对象”的相当复杂的搜索(= 单独的视图、控制器和进程 - 没有框架,一切都由 Jquery Mobile 处理)。

我需要通过 Jquery-AJAX 运行搜索查询,现在将搜索表单发布到我的 searchProcess.cfc,它执行数据库查询。

问题:
我不确定在哪里呈现结果?

结果将相当复杂(数据库有几百万条记录,40 个字段的行)并且应该以单个结果布局或多个结果布局文件结束。

我正在考虑在 cfc 中构建文件并通过cfsavecontent将它们交还,但我正在到处阅读这是一个禁忌......

那么有哪些替代方案呢?

我可以设置一个template_single.cfmtemplate_multi.cfm ,将搜索结果作为 AJAX 响应传回,然后从成功处理程序中触发另一个 AJAX 调用来调用模板,然后呈现第二次调用的输出。这似乎非常复杂,而且如果不传递大型数据集,我看不出我可以在哪里放置我的分页。

所以我正在寻找一些关于如何以面向对象的方式处理搜索结果的建议?

感谢您的输入!

编辑:
经过几个小时的谷歌搜索,我目前正在查看以下选项:
1.)运行单个数据库查询以返回分页结果 - 根据此处
2.)将具有 0-25 条记录的数据发送回 AJAX JSON
3.) 尝试在循环中使用模板 cf/js(长度为 1 或长度为 25) - 如此

这意味着仅对 JSON 中的 1-25 条原始记录进行数据传输。如果我尝试在成功处理程序中呈现,我不必 http 请求另一个模板。

这种方法有意义吗?

4

1 回答 1

1

首先,我认为将显示逻辑放在专门用于显示逻辑的 .cfc 中没有任何问题。我知道这不是严格的 MVC,但取决于你在做什么,它可以正常工作。我不喜欢在函数中执行任何类型输出的 .cfc。我总是交回函数中的任何数据。

/结束意见

对于这个特殊问题,我第二次编辑想法,将视图设置为几乎所有 HTML/jQuery,并使用 AJAX 调用分页记录集。至于单个/多个结果,我会根据您需要的单独的 jQuery 函数来选择。这样做的好处是您可以让多个记录集显示调用单个记录显示来查看单个记录(同时仍将完整记录集保留在 Dom 中)。

在这两种情况下,我强烈建议使用Javascript Dump函数(在可视化 DOM 数据方面有很大帮助。)

PS。如果有人发现任何更新/更好的 JS Dump 函数可以像 cfdump 一样工作,请告诉我!

于 2012-05-22T14:09:33.107 回答