2010-04-29 99 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; 
}