Ajax在MVC项目中应该调用哪个URL?

时间:2012-12-01 19:45:16

标签: php javascript ajax model-view-controller front-controller

我是半新手,所以请耐心等待...... 注意,此时我不知道jQuery或Json

在我的MVC项目中(我没有使用框架,但项目结合了前端控制器和MVC),我有:
1)一个Controller,它向DAO发送一些参数。 DAO运行MySQL查询并将一系列文章发送回Controller 2)一个视图层,我希望用户能够单击按钮从文章移动到文章。我建议这样做的方法是通过javascript Ajax调用来获取Controller中生成的数组中的下一篇文章。

我的问题是:Ajax函数调用的URL应该是什么?显然它无法调用Controller(或者可以吗?)。我应该添加一类Controller会用数组实例化的专用Ajax内容容器吗?我很难看到View如何找到正确的URL ... Controller应该将参数传递给View并让它请求查询吗?

3 个答案:

答案 0 :(得分:2)

XHR(也称为AJAX)调用在控制器级别上与传统浏览器请求没有区别。差异仅在于您希望收到的回应。

这意味着,如果您已完全实现了视图(不仅仅是哑模板),请求的类型应该仅对视图很重要。您可以通过添加扩展程序轻松区分它们:

  • http://foo.in/user/list - 简单请求
  • http://foo.in/user/list.json - XHR请求

差异主要在路由机制中得到认可,它们在Request实例上设置了特定的细节。当控制器看到Request实例有isXHR标志时,它会告诉视图:“用某些内容回复此内容,这不是完整的HTML页面”

基本上,相同的控制器应该处理普通和XHR调用。事实上,你不关心,它是什么类型的请求。只需在响应中生成htmlxmljson

  

P.S。:模型图层应完全不受请求类型的影响。

答案 1 :(得分:0)

从上面的帖子列表中我假设您必须知道在编辑文章时调用方法的Ajax语法。

如何操作如下: 1.最初在控制器内定义一个操作服务器的操作(可能在此上下文中编辑您的文章。) 2.通过ajax方法指定Controller和您要调用的操作。 ( 在这个时刻它应该是文章 - 控制器,编辑文章 - 行动)。

控件会自动导航到特定的操作方法。

此致 Pavan.G

答案 2 :(得分:-3)

取决于您使用的框架。但一般来说:

您可以使用Controller发送“标志”(例如在GET变量中),它是一个AJAX查询,然后退出该函数,但具有不同的AJAX查询控制器被认为是更好的路径:)无论如何,类似的东西:

function page() {
   if($_GET["is_ajax"] == "1") {
      // return the AJAX query
      return;
   }
// go on with showing the page
}

希望这有帮助!