【问题标题】:Where to render Ajax search results in an object oriented approach using Coldfusion?使用 Coldfusion 以面向对象的方法在哪里呈现 Ajax 搜索结果?
【发布时间】:2012-05-22 09:05:28
【问题描述】:

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

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

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

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

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

那么有什么选择呢?

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

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

感谢您的意见!

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

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

这种方法有意义吗?

【问题讨论】:

  • 如果您投票结束,请至少发表评论。
  • 这不是我的投票,但选择的原因是“属于Software Engineering”。这是错误的,因为那个网站是关于程序员(人)的,而这个网站是关于编程(任务)的,这个问题肯定是关于后者的。
  • 顺便说一句,虽然我自己对此没有任何想法,但我建议将标签更改为:[javascript] [templating-engines] [jquery-mobile] [ajax] [coldfusion] - 我认为这些更能代表你的问题。
  • 频繁 - 您的问题并不表示目标流量或受众或性能问题。根据我的经验,您正在解决的问题在很大程度上受到目标客户端环境的影响。例如,由于您使用的是 jquery mobile - 这是一个移动应用程序吗?如果是这样,那么上面的选项 2 可能是最有效的方式(这可能是您的主要关注点)。但如果它是纯桌面环境或 Intranet 选项 1 可能更可取。明白我的意思吗?
  • @MarkAKruger - 它将是一个移动应用程序

标签: javascript ajax jquery-mobile coldfusion templating-engine


【解决方案1】:

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

/结束意见

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

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

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

【讨论】:

  • 我喜欢“延迟加载”25 条记录的想法。但我认为通常提取的单个记录将基于条码等标准,因此不会有 25 个结果,而只有 1 个。我仍然会记住这一点,也许只是将前一个和下一个 12 个记录与它。
  • 关于转储...我通常只使用浏览器控制台 - 使用 console.log(...) 用于简单值,console.dir(...) 用于更复杂的变量,加上 Firebug/Dragonfly/etc 用于检查 HTML/DOM/等.
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2016-05-18
  • 2021-06-18
  • 1970-01-01
  • 1970-01-01
  • 2014-01-02
  • 1970-01-01
  • 2013-01-25
相关资源
最近更新 更多