我有一个正在构建的自滚动MVC框架,到目前为止,已经设法避免了任何AJAX调用的需要。但是,现在,我想创建一个实时更新提要。
我的问题是,通常将Ajax调用的处理程序存储在MVC中的什么位置?我应该将它们存储在进行呼叫的同一控制器中吗?
例如,如果我的域名www.example.com/browse/blogs(浏览器是控制器,博客是方法)正在对更新后的博客列表进行AJAX调用,则该调用将仅仅是访问www.example.com/浏览/更新列表或其他内容?
或,因此它是一个单独的仅AJAX控制器?www.example.com/ajax/update_blogs
你怎么做呢?
我想说一个Ajax请求与一个非Ajax请求完全相同:实际上,从HTTP协议的角度来看,它的工作方式完全相同。
唯一的区别是,您将返回一些非格式化的数据,例如JSON或XML (嘿,这与生成ATOM提要^^相同) ,或者仅返回HTML页面的一部分。
因此,我会将这些请求视为其他任何“正常” HTTP请求,并按照与非Ajax请求相同的方式放置它们。
半替代的想法可能是在您的控制器中仅执行一项操作:/browse/blogs-并始终调用该操作。
/browse/blogs
但是,它将检测是否正在通过Ajax请求,并且会:
注意:这不是一个“疯狂”的想法;例如,Zend Framework提供了一些便利的工具(请参阅12.8.4.3。ContextSwitch和AjaxContext)