簡體   English   中英

為Zend Framework應用程序構造AJAX的最佳方法

[英]Best way to structure AJAX for a Zend Framework application

我想到了一個AJAX模塊服務層,其中包含與我的模型交互的控制器和動作。 容易,但不是很可擴展,並且會違反DRY。 如果我更改某些流程的物流,則必須編輯AJAX控制器和常規控制器。

因此,理想情況下,我將為javascript和非javascript用戶加載完全相同的操作。 我曾考慮過可能要檢查$_POST['ajax'] ,如果設置了,我會為數據加載一個不同的(json'y)視圖。 想知道如何/一個好方法來做到這一點(我想象中的前端控制器插件?),或者是否有人可以指示我去學習最新的教程,該教程描述了構建大型ajax應用程序的一種非常好的方法。

實際上,您可以使用request對象來確定是否通過ajax發生了請求,例如:

// from your controller
if($this->getRequest()->isXmlHttpRequest()) {
    // an ajax request, do something special (e.g. render partial view)
} else {
   // render entire view
}

基本上,這是對x-requested-with標頭的測試(並非總是存在,具體取決於JS庫等)。 請參閱(在“檢測Ajax請求”的標題下):

http://framework.zend.com/manual/zh/zend.controller.request.html

您可以檢查XmlHttpRequest標頭。 但是,並非所有的Javascript庫都可以這樣做,即使不是所有的Javascript庫也不一定在所有瀏覽器中都這樣做。

還有一個AjaxContext ,它基本上檢查“ context”請求變量,類似於您對$ _POST ['ajax']的想法。

我實際上最終所做的與您最初的建議類似。 我創建了一個AJAX模塊。 為了防止大量的控制器代碼重復,我創建了一個服務層來處理模型上的所有操作,因此我的控制器實際上僅負責轉換輸入請求和顯示。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM