AJAX和jQuery与MVC

Nyx*_*nyx 14 php model-view-controller jquery codeigniter

当你使用带有大量AJAX位的jQuery的MVC模型时,如何组织控制器,方法和视图?

问题1

你是否有一个单独的控制器用于AJAX调用,或者你将AJAX方法与通常的非AJAX方法混合在一个控制器中?

问题2

如果你要在单个控制器中混合使用AJAX和非AJAX方法,你有没有单独的AJAX和非AJAX方法,或者你把它们组合在一起(如果可能的话)并传入一个值(NULL或AJAX)来决定是否将普通视图或AJAX视图传递回浏览器.

问题3

如果你有50个不同的AJAX调用,并且每个调用需要一个方法,而这又需要一个视图,我们最终会得到一个包含50个方法和50个视图的控制器.这是一个很好的MVC练习吗?我可以想到控制器中的所有AJAX方法共享一个视图,其中视图文件包含大小写条件语句,视图文件传递一个参数,该参数确定将使用50个案例中的哪一个.有点像将50个视图压缩为1.

问题4

您没有想到如何在控制器方法中而不是在视图中回显输出,而不是拥有如此多的视图(50个视图)?这样我们就不会有这么多的观点.

顺便说一句,我正在为我的MVC模型使用CodeIgniter PHP框架

Dav*_*veo 10

问题1

我将ajax和非ajax代码混合到同一个控制器中.这样,您的代码就可以轻松找到.

问题2

我将ajax和非ajax方法结合在一起.使用javascript渐进增强更容易,这样没有javascript的人仍然会发布到同一个控制器

问题3

你不应该有1个控制器有50种方法.每个功能都应该有一个控制器.所以一个用户控制器,一个Foo控制器,一个Bar控制器 - 所以你可能最终得到10个控制器,每个控制器有5个方法.这种方法属于特定于其功能的类.我有单独的观点而不是一个大观点.您不应该在视图内部使用LOGIC来确定显示的内容,这是控制器的工作.但是一些控制器/方法可以返回与其他方法相同的视图

问题4

或者控制器永远不应该输出HTML.使用视图,这是MVC的整个目的,以分离出代码(控制器)视图(渲染)问题.有时我的视图只返回JSON或XML,然后我使用Javascript模板来更新DOM.Othertimes我的观点返回HTML.例如表单上的保存功能.如果成功,可能只返回一个布尔值.然后我的Javascript会根据响应隐藏或显示DIV.