2009-12-01 56 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去佈局系統和等等。