首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >MVC ajax调用-在哪里处理它们?

MVC ajax调用-在哪里处理它们?
EN

Stack Overflow用户
提问于 2010-01-07 06:55:11
回答 3查看 2.9K关注 0票数 5

我有一个我正在构建的自滚动MVC框架,到目前为止,我已经设法避免了任何AJAX调用的需要。但是,现在我想创建一个实时更新提要。

我的问题是,ajax调用的处理程序通常存储在MVC中的哪里?我是否应该将它们存储在调用所涉及的同一控制器中?

例如,如果我的域www.example.com/browse/blogs (浏览是控制器,博客是方法)正在进行AJAX调用,以获取更新的博客列表,该调用是简单地调用www.example.com/browse/update_list还是其他什么?

或者,它是一个单独的AJAX控制器吗?www.example.com/ajax/update_blogs

你是怎么做到的?

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2010-01-07 07:00:21

我要说的是,Ajax请求与非Ajax请求完全相同:实际上,从HTTP协议的角度来看,它的工作方式完全相同。

惟一的区别是返回一些非格式化数据,如JSON或XML (嘿,这与生成ATOM提要相同^^ ),或者只返回HTML页面的一部分。

因此,我会将它们视为任何其他“普通”HTTP请求,并以处理非Ajax请求的方式放置它们。

一种半替代的想法可能是在你的控制器中只有一个动作:/browse/blogs --并且总是调用它。

但是,它将检测它是否通过Ajax请求,并将:

如果通过“普通”请求

  • 调用,
  • 将返回整个页面;如果通过Ajax请求

调用,则只返回部分数据(或页面的一部分)。

注意:这不是一个“狂野”的想法;例如,Zend Framework提供了一些东西来促进这一点(参见12.8.4.3. ContextSwitch and AjaxContext )

票数 2
EN

Stack Overflow用户

发布于 2010-01-07 07:08:26

最佳实践是完全忽略它是一个AJAX请求这一事实,只关心AJAX请求与哪个控制器相关。如果您有一个通用的AJAX控制器,那么可以这么说,您很可能是将苹果和梨分组在一起。

主要区别在于,对于AJAX请求,您可能需要避免设置任何布局(而不是视图)数据。这可以通过在父Controller类中有一个方法来检查有效的AJAX请求来轻松解决:

代码语言:javascript
运行
复制
protected function isAjax()
{
    return (isset($_SERVER['HTTP_X_REQUESTED_WITH']) &&
            $_SERVER['HTTP_X_REQUESTED_WITH'] == 'XMLHttpRequest');
}
票数 7
EN

Stack Overflow用户

发布于 2010-01-07 06:59:02

即使您没有使用AJAX MVC,我也建议您浏览一下asp.net晚餐教程,特别是AJAX部分。它将有助于回答您的一些设计问题。

它们在同一控制器上有单独的操作。

http://www.wrox.com/WileyCDA/Section/id-321793.html

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/2016973

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档