1

可能重复:
MVC ajax 调用 - 在哪里处理它们?

我有一个框架,整体视图如下:
在此处输入图像描述 这张图片来自 PHP 5 社交网络书,我没有这Page Object部分。我对简单的 javascript/jQuery 语句没有任何问题,但是当涉及到我需要获取数据的 JSON 或 Ajax 时,我感到很困惑!因为在 JSON 中我们需要放置 url 部分。在 MVC 中没有直接调用。一切都将到达前端控制器(index.php)。
现在的问题是如何在 MVC 中处理 JSON 或 Ajax 请求?我应该在另一个目录中创建单独的 json php 文件来处理不是面向对象的数据库连接等吗?

4

2 回答 2

1

您应该使用参数对前端控制器进行“特殊”调用,该参数指定它是帖子中的 ajax 调用并以不同方式处理它,例如:

if($_POST['retrieve_postaction']){
   //general action 
   //load object and do stuff
   if($_POST['is_ajax']){
       //format data for an ajax call and return it
      echo json_encode($array_object);
      exit;}
   else {
      //normal action
     }
   }

}
于 2012-07-16T07:40:24.810 回答
0

我不知道您使用的是哪个框架,但例如 Zend Framework 有一种机制允许您修改操作返回其数据的格式。在 Zend Framework 中,这称为上下文切换。

您可能想看看他们是如何实现该功能的,看看您是否可以将其集成到您的 mvc 中或在您自己的 mvc 中对其进行建模。

http://framework.zend.com/manual/en/zend.controller.actionhelpers.html#zend.controller.actionhelpers.contextswitch

- - 编辑 - -

听起来您的框架没有委托给控制器?如果是这种情况,我将实施您在问题中暗示的解决方案,并实施仅由您的 Ajax/REST 调用使用的脚本。

- - 编辑 - -

因此,您的前端控制器将请求分派给控制器,在这种情况下,我建议在控制器级别实现上下文切换,这将使用您在标准请求中使用的相同 url 工作,但要么读取

a) HTTP 标头信息以查看您要求的响应类型,您将在 AJAX 请求中设置。

b)在 url 中发送另一个参数,类似这样的参数format=json将切换您的操作的返回类型。

我建议阅读我发布的链接中的信息,因为它可能会使事情变得更清楚一些。

于 2012-07-16T07:40:10.550 回答