2010-04-29 100 views
2

我是Zend框架工作的新手。 我使用$ ajaxContext = $ this - > _ helper-> getHelper('AjaxContext');用于添加动作上下文。我有一个Index.phtml页面,所有其他视图都是ajax.phtml页面。我必须在ajax.phtml页面中执行一些java脚本方法。但我没有找到一种方法来引用ajax.phtml页面中的js文件。我已经尝试使用$ this-> view-> headScript() - > appendFile添加控制器init和index操作,尽管我在页面源中添加了引用,但没有一个htese似乎在处理ajax内容。然后我尝试将它添加到ajax页面的操作中,然后它不会进入页面源代码本身。据我了解,$ this-> view-> headScript() - > appendFile将文件引用附加到布局页面和ajax.phtml页面,布局将被禁用。 有没有什么办法可以将我的js文件引用到ajax.phtml页面中?ajax在zend框架工作

回答

1

我发现了两个方法来解决这个问题。一个是我们可以用jquery.live()方法绑定ajax postbacked content按钮的click事件。这将在DOM中注册元素,即使页面加载时该元素不存在。 另一种方法是使用getScript()方法在每个ajax回发的成功中重新加载JavaScript。通过这种方式,所有新添加的元素将被注册并激活。如果你正在使用jQuery对话框,使用变量,你可能不得不销毁这些,然后重新加载js。

1

你是对的,但你在哪里回显ViewHelper?

与用HeadScript视图助手尝试添加文件后:

echo $this->headScript(); 
+0

我在布局 – neo 2010-04-30 16:19:54

+0

页面@rookie正在做那就试试吧在ajax.phtml不是你的布局。 – Alexar 2010-05-02 16:09:40

0

将这个代码到你的控制器的公共职能:

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