在zend框架中的ajax

时间:2010-04-29 19:01:29

标签: php ajax zend-framework

我是Zend Frame Work的新手。 我正在使用$ ajaxContext = $ this-> _helper-> getHelper('AjaxContext');用于添加动作上下文。我有一个Index.phtml页面,所有其他视图都是ajax.phtml页面。我必须在ajax.phtml页面中做一些java脚本方法。但我没有找到一种方法来引用ajax.phtml页面中的js文件。我尝试在控制器初始化和索引操作中添加这些,使用$ this-> view-> headScript() - > appendFile,虽然我在页面源中添加了引用,但没有一个htese似乎在工作ajax的内容。然后我尝试将其添加到ajax页面的操作中,然后它不会进入页面源本身。据我所知,$ this-> view-> headScript() - > appendFile会将文件引用附加到布局页面,对于ajax.phtml页面,布局将被禁用。 有什么方法可以在ajax.phtml页面中引用我的js文件吗?

3 个答案:

答案 0 :(得分:1)

你是在正确的方式,但你在哪里回应ViewHelper?

使用headScript视图助手添加文件后尝试:

echo $this->headScript();

答案 1 :(得分:1)

我找到了两种解决此问题的方法。一个是我们可以使用jquery.live()方法绑定ajax回发内容按钮的click事件。这将在DOM中注册元素,即使在页面加载时元素不存在也是如此。 另一种方法是使用getScript()方法在每个ajax回发成功时重新加载javascript。这样,所有新添加的元素都将被注册并激活。如果你使用jquery对话框,使用变量,你可能必须在重新加载js之前销毁它们。

答案 2 :(得分:0)

将此代码放入Controller公共函数:

public function indexController(){
  $this->_helper->viewRenderer->setNoRender();
  $Response = $this->getResponse();
  $Response->setBody(Zend_Json::decode($foo))
           ->setHeader('content-type', 'application/json', true);
return null;
}