簡單的問題......我正在使用MVC結構來構建我的網站(它相當大,所以它有助於維護。我現在開始集成一些有趣的AJAX函數來爲JavaScript/AJAX友好用戶打造一些雲。如何在大型站點中組織AJAX處理程序?
因爲我是如此肛門有關的組織,我想保存我的ajax PHP處理程序的方式,是合乎邏輯的,安全的和(希望)分開。
你如何組織你的嗎?是否有一個最佳做法?
簡單的問題......我正在使用MVC結構來構建我的網站(它相當大,所以它有助於維護。我現在開始集成一些有趣的AJAX函數來爲JavaScript/AJAX友好用戶打造一些雲。如何在大型站點中組織AJAX處理程序?
因爲我是如此肛門有關的組織,我想保存我的ajax PHP處理程序的方式,是合乎邏輯的,安全的和(希望)分開。
你如何組織你的嗎?是否有一個最佳做法?
對我來說,最好的解決方案是有一個index.php前端控制器,它可以處理頁面生成和ajax請求,並且具有創建頁面的相同文件爲你做一些Ajax事情,甚至是模板和模塊重裝。
這一切都簡化了,你有一個統一的結構。
礦都存儲在一個指定的文件夾_ajaxHandlers
,此文件夾包含文件,如updatePageList.php, deletePage.php, etc
)。
我不知道這是做的最好的方式,因爲我也relativly新的AJAX概念:)更好的存儲任何建議/處理文件也由我appriciated。
在目錄名稱下劃線是因爲我喜歡他們的目的字母排序列出的文件。在我的結構中,下劃線的文件夾名稱被認爲是systemdirs。
此公用文件夾中的文件夾? (即時假設它必須,但我想確保) – johnnietheblack 2009-12-01 16:14:18
是的,至少對我的系統類是它。默認情況下,directorylisting被禁用。 – Ben 2009-12-01 16:15:40
如果它是公開的或者目錄列表被禁用了,是否重要?檢查JavaScript至少與試圖查看服務器一樣簡單。 – Nosredna 2009-12-01 16:53:52
我一樣好, 我以前用來存儲與ajax-前綴阿賈克斯處理像
ajax-updatestatus.php
ajax-managemessages.php
但最近我搬出去,如果你使用jquery使用一個新文件夾
或另一個框架,您可以在您現有的方法中將本地請求與$ _SERVER ['HTTP-X-REQUEST-BY']標頭區分開來。 這樣,你有Ajax和在同一個地方正常的要求,所以沒有了本月結構的變化。
沒有最佳實踐,它是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;
}
如何每個Ajax調用都有一個ID(你應該以某種方式記錄,如果你有很多他們的)和所有處理程序在一個文件中有一個巨大的屁屁開關箱loop.Or如果它將是一個大文件可能組織他們在一些文件 - ID 3001,3002,3003表單提交去formHandler.php ID 4001 400N去佈局系統和等等。
關於這種方法的問題。同一個Ajax處理程序可以同時調用2次或3次嗎?使用相同的文件處理所有ajax時是否有限制或性能規格? – BenRacicot 2015-01-01 03:17:53
爲什麼會有限制?使用一個文件而不是多個文件是相同的,甚至更好,如果你緩存php文件比它更快。 – dfilkovi 2015-01-02 14:39:07