如何在大型网站中组织AJAX处理程序?

时间:2009-12-01 16:10:06

标签: php ajax organization

简单的问题......我正在使用MVC结构来构建我的网站(它相当大,所以它有助于维护。我现在开始集成一些有趣的AJAX函数来为Javascript / AJAX友好用户提供更多功能

由于我对组织如此痴迷,我想以一种逻辑,安全和(希望)分离的方式存储我的ajax PHP处理程序。

你如何组织你的?有最好的做法吗?

6 个答案:

答案 0 :(得分:1)

对我来说,最好的解决方案是使用一个index.php前端控制器来处理页面生成和ajax请求,并且创建页面的相同文件可以为你做一些事情,甚至是模板和模块重新加载。

这简化了一切,并且您拥有统一的结构。

答案 1 :(得分:1)

没有最佳实践,而且它是PHP项目中的一个地方,在这些地方,很多单个文件都在控制器结构之外。检查您的框架文档,看看他们是否在此领域提供任何建议,因为它是一种越来越常见的构建应用程序的方式。

我在野外处理过的最好的方法就是像处理MVC中的任何其他请求一样处理ajax请求。为您的请求创建一个控制器操作。根据项目/个人偏好的大小,您可以为ajax请求创建单独的逻辑控制器,或者将ajax操作与现有控制器分组(可选择为操作名称指定“ajax”前缀或后缀)

class IndexController extends BaseMvcController{
    public function indexAction(){}

    public function ajaxuserinfoAction(){}
}

//或

class AjaxController extends BaseMvcController{
    public function userinfoAction(){}
}

这仍然留下了如何处理请求的视图部分。我已成为创建stdClass对象然后将echo json_encode($object);header('Content-Type: application/json');一起使用的忠实粉丝。

如果您的MVC框架支持禁止网站布局,则可以在视图中构建响应输出。如果没有,在这样的地方添加一个简单的辅助函数也可以正常工作

protected function outputJsonForAjax($object)
{
    header('Content-Type: application/json');
    echo json_encode($object); 
    exit;
}

答案 2 :(得分:0)

我的存储在指定的文件夹_ajaxHandlers中,此文件夹包含updatePageList.php, deletePage.php, etc)等文件。

我不确定这是最好的方法,因为我也是ajax概念的新手:)任何有关更好的存储/处理文件的建议也都是我的评价。

dirname中的下划线是因为我喜欢按其用途排序的按字母排列的文件夹。在我的结构中强调了foldernames是考虑systemdirs。

答案 3 :(得分:0)

我也这样做, 以前我曾经用ajax-前缀存储ajax处理程序,如

ajax-updatestatus.php
ajax-managemessages.php

但最近我搬出了使用新文件夹

答案 4 :(得分:0)

如果您使用jquery或其他框架,您可以在现有方法中使用$ _SERVER ['HTTP-X-REQUEST-BY']标头本地区分请求。 这样你在同一个地方就有了ajax和普通请求,所以没有结构改变。

答案 5 :(得分:0)

每个ajax调用都有一个id(你应该以某种方式记录,如果你有很多)并且所有处理程序都在一个带有巨大的ass switch case case循环的文件中。或者它是否会很大文件可能会在几个文件中组织 - id 3001,3002,3003表单提交到formHandler.php id 4001 400n转到布局系统等等。