2009-12-01 53 views
1

简单的问题......我正在使用MVC结构来构建我的网站(它相当大,所以它有助于维护。我现在开始集成一些有趣的AJAX函数来为JavaScript/AJAX友好用户打造一些云。如何在大型站点中组织AJAX处理程序?

因为我是如此肛门有关的组织,我想保存我的ajax PHP处理程序的方式,是合乎逻辑的,安全的和(希望)分开。

你如何组织你的吗?是否有一个最佳做法?

回答

2

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

这一切都简化了,你有一个统一的结构。

+0

关于这种方法的问题。同一个Ajax处理程序可以同时调用2次或3次吗?使用相同的文件处理所有ajax时是否有限制或性能规格? – BenRacicot 2015-01-01 03:17:53

+1

为什么会有限制?使用一个文件而不是多个文件是相同的,甚至更好,如果你缓存php文件比它更快。 – dfilkovi 2015-01-02 14:39:07

0

矿都存储在一个指定的文件夹_ajaxHandlers,此文件夹包含文件,如updatePageList.php, deletePage.php, etc)。

我不知道这是做的最好的方式,因为我也relativly新的AJAX概念:)更好的存储任何建议/处理文件也由我appriciated。

在目录名称下划线是因为我喜欢他们的目的字母排序列出的文件。在我的结构中,下划线的文件夹名称被认为是systemdirs。

+0

此公用文件夹中的文件夹? (即时假设它必须,但我想确保) – johnnietheblack 2009-12-01 16:14:18

+0

是的,至少对我的系统类是它。默认情况下,directorylisting被禁用。 – Ben 2009-12-01 16:15:40

+0

如果它是公开的或者目录列表被禁用了,是否重要?检查JavaScript至少与试图查看服务器一样简单。 – Nosredna 2009-12-01 16:53:52

0

我一样好, 我以前用来存储与ajax-前缀阿贾克斯处理像

ajax-updatestatus.php 
ajax-managemessages.php 

但最近我搬出去,如果你使用jquery使用一个新文件夹

0

或另一个框架,您可以在您现有的方法中将本地请求与$ _SERVER ['HTTP-X-REQUEST-BY']标头区分开来。 这样,你有Ajax和在同一个地方正常的要求,所以没有了本月结构的变化。

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; 
} 
0

如何每个Ajax调用都有一个ID(你应该以某种方式记录,如果你有很多他们的)和所有处理程序在一个文件中有一个巨大的屁屁开关箱loop.Or如果它将是一个大文件可能组织他们在一些文件 - ID 3001,3002,3003表单提交去formHandler.php ID 4001 400N去布局系统和等等。

相关问题