2013-01-08 81 views
0

我有一個困難時期試圖找出如何從下面的代碼位於在控制器早在查看響應打印出來:CakePHP的JsHelper - 得到響應,並查看

if ($this->request->isAjax()){ 
     Configure::write ('debug', 0); 
     $this->autoRender = 0; 
     $this->layout = 'ajax'; 
     $results = "My Data"; 
     echo json_encode($results); 
    } 

    //tried doing this and it doesn't work 
    $this->set('results',$results); 

我只想能夠訪問我的View中的$ results變量中的數據。

+0

您的查看代碼的請求是什麼樣的? –

+0

$ autoRender通常是布爾值 - 不是int。但它應該不重要..但會更清潔。 – mark

回答

0

如果這是您的整個方法,那麼在您的視圖中不顯示任何內容是合乎邏輯的。既然你已經禁用自動解析用:

$this->autoRender = 0; 

你需要在某些時候手動渲染視圖,使用:

$this->render('view'); 

哪裏view是要渲染視圖的實際名稱。否則,你只會得到一個空白頁面。

另外請注意,您在您的isAjax()檢查中設置$results,但是你把它設置爲檢查外視圖,因此如果「常規」呼叫(非Ajax)就是讓你會得到一個未定義的變量錯誤你的控制器行動。

+0

我將autoRender設置爲false,因爲我不想渲染任何東西,我想要做的就是存儲由ajax響應返回的數據,然後將其發送回視圖。另外,我正在做$ this-> set();在isAjax()檢查中,上面只是一個示例代碼。 我沒有遇到這個問題,直到我開始使用JsHelper。 – Walter

+0

@Walter這聽起來像你正在尋找'$ this-> Js-> request'。查看[文檔](http://book.cakephp.org/2.0/en/core-libraries/helpers/js.html#JsHelper:request)。 – Oldskool