0

JQuery 的 AJAX “.get” 方法调用控制器的(php 页面)方法,并进一步处理返回的数据……但是当我们认为它是最佳实践时,控制器只是将控制权转移到模型和视图。控制器从不返回任何内容或回显任何数据……那么我们如何支持这个论点呢?我可能错了..仍处于初始学习阶段,如果您觉得这个问题有点太天真,请原谅我:(。

一个例如。是我试图实现的 JQuery 的自动完成插件,它需要数据库中的用户名数组。一般来说,使用 CI.. 流程是查看表单 -> 控制器 -> 数据库模型(DATA) -> 控制器(DATA)-> 另一个视图......但如果我必须实现 JQuery/AJAX 方式,那么控制器将不得不输出数据,以便 AJAX 调用函数 (get) 可以获取它。正确的?

那么在不影响 MVC 范式的情况下,流程应该是怎样的呢?

问候。

4

3 回答 3

4

MVC 只是一种设计模式。它往往使事情变得更容易。但它是一种设计应用程序的方式,并不意味着你必须坚持它。

我使用 Codeigniter 并使用控制器来回复 ajax。在我的例子中,控制器负责接收请求,并将数据发回(就像我在调用视图或模板一样)。

不要想太多,使用你想要的,当你想要的时候,最适合你需要的方式。

于 2012-06-07T04:54:45.313 回答
1

如果您真的想坚持使用 mvc,另一个选择是拥有一个仅用于 ajax 响应的视图。

您可以让它简单地回显响应,或者json_encode()如果您总是使用 json 回复,您可以让它响应。

于 2012-06-07T08:03:13.967 回答
0

正如 Nicolás 所指出的,MVC 是一种设计模式,而不是法律。

但是,您不应将 AJAX 视为视图,而是将其视为一种传输,一种媒介,控制器视图模型视图之间通过它进行通信。因此,您的实际视图不再由 PHP 表示,而是由浏览器本身表示,或者更确切地说是您在其上运行的 JavaScript 代码。您可以使用Zend JSON-RPC Server之类的 RPC 服务器抽象出 PHP 端的 AJAX 。

另请注意,对于 Web 应用程序,Model-View-Presenter 和类似模式可能更有用,因为它保持 View 和 Presenter 之间的通信。

于 2012-12-31T17:54:29.500 回答