2011-03-17 53 views

回答

0

那么有两种方法在zend框架项目中使用ajax。确保你的库文件夹中有ZendX。它可以帮助你使用Ajax。

第一个也是最直接的方法就是在任何其他web项目中使用它。将所有java脚本文件复制到/public/js/文件夹中。

在我的项目中,我使用jQuery。因此,在您_initViewHelpers功能,您必须启用jQuery的:

ZendX_JQuery::enableView($view); 

在布局脚本,你可以这样做:

if ($this->jQuery()->isEnabled()){ 
    $this->jQuery()->setLocalPath($this->baseUrl(). 
          '/js/jquery/jquery.min.1.4.4.js') 
    echo $this->jQuery()->uiEnable(); 
} 

,并在此的任何视图脚本:

$this->jQuery()->enable()->addJavascriptFile ($this->baseUrl() . 
               '/js/frontend.js') 

另一种方式是让zend创建ajax函数。注意HOW TO,它从一开始就告诉你如何在zend框架项目中使用ajax。

0

进入我的bootstrap.php

protected function _initJQuery() 
{ 
    $this->bootstrap('view'); 
    $view = $this->getResource('view'); 
    ZendX_JQuery::enableView($view); 
    $viewRenderer = new Zend_Controller_Action_Helper_ViewRenderer(); 
    $viewRenderer->setView($view); 
    Zend_Controller_Action_HelperBroker::addHelper($viewRenderer); 
    $view->jQuery()->setRenderMode(ZendX_JQuery::RENDER_JAVASCRIPT | ZendX_JQuery::RENDER_JQUERY_ON_LOAD); 
} 

,你可以看到你需要ZendX到 资料库

在Layout.phtml

echo $this->headScript()->appendFile('/js/jquery-1.4.4.min.js') 
     ->appendFile('/js/jquery-ui-1.8.10.custom.min.js'); ?> 

和你将会有全面的JQuery可用,那么,您应该期待Ajax响应SE,像我一样:

private function noLayout() { 
    $viewRenderer = Zend_Controller_Action_HelperBroker::getStaticHelper('viewRenderer'); 
    $viewRenderer->setNoRender(); 
    Zend_Layout::getMvcInstance()->disableLayout(); 
} 

此功能将禁用布局,并不会要求一个观点,所以你可以做从控制器动作回音,作为例子:

public function listAction() { 
    $this->noLayout(); 
     echo json_encode(array('success' => TRUE)); 
} 

这是“我的方式“,让我知道,如果你找到”更好“或只是不同的东西

+1

没有必要做那个”noLayout“的东西。你可以使用'$ this - > _ helper-> json($ data)'来发送任何格式为json的响应。它也发送propper标题和东西,禁用布局,观点等... – 2011-03-30 13:52:10

+0

谢谢托马斯,我错过了。 – MiPnamic 2011-03-30 14:45:48