我正在使用Kohana但这个问题适用于Rails,CI或任何其他MVC Web开发框架.坚持一个服务器端AJAX脚本的最佳位置在哪里?
我计划创建一个Ajax_Controller并使用每个脚本的方法/操作.
例如,主页上的登录表单index.php/home
将发送XMLHttpRequest index.php/ajax/login
,编辑配置文件表单index.php/profile/edit
将发送XMLHttpRequest index.php/ajax/editprofile
.什么是最佳做法?
我倾向于将我的ajax动作放在与任何给定模型的非ajax动作相同的控制器中.
当我可以,我尝试使用相同的操作,只更改输出类型.大多数任务都应该有一个非ajax版本,所以这往往很好.非常方便减少逻辑重复.
AJAX跨越了所有MVC边界.也就是说,它不仅仅涉及模型,视图或控制器之一.
您的AJAX脚本将调用您站点上的脚本 - 因此这将涉及您为此目的创建的控制器层的一部分.
反过来,该控制器将使用模型层提供的接口访问数据库,就像非AJAX请求一样.
返回客户端的响应数据可以打包为JSON或XML等.从技术上讲,这是视图层的任务,但是如果您的应用程序对视图层的定义只不过是"一个HTML模板系统"而不是"处理和格式化任何被发送回客户端的内容,无论它是HTML还是其他类似的东西" XML"那么你的XML或JSON生成可能需要进入它自己的一个新的小部分.
至于自己发送脚本(Javascript文件),这可能是由Web服务器直接处理,而不是在MVC框架内处理.
你为GET和POST请求制作了不同的控制器吗?我不.在我看来,JS请求也不应该以不同的方式处理.
我个人看到JS请求就像GET,POST或任何其他类型的请求.因此,如果我有与用户相关的基于JS的操作,我只需在用户控制器中创建它们.