我是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文件吗?
答案 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;
}