2014-01-10 50 views
0

我想在我的yii項目中的APIController裏面重複調用一個javascript函數。如何在yii控制器動作中使用Javascript/jQuery代碼?

public function actionMytimer() { 
    Yii::app()->clientScript->registerCoreScript('jquery'); 
    Yii::app()->clientScript->registerCoreScript('jquery.ui'); 
    $hello = setInterval(test,1000); 
    function test(){ 
     echo 'hellooo interval'; 
    } 
} 

它非常有必要對我來說,在一個特定的時間運行「測試」的方法interval.Is這可能嗎?如果沒有,那麼任何方式做到這一點?請help.Thanks在advnc。 這是當前的警告消息:

Fatal error: Call to undefined function setInterval() in /Library/WebServer/Documents/MediaPult/protected/controllers/APIController.php on line 449 
+3

你需要輸出整個JavaScript代碼。你不能在你的PHP控制器中運行它。嘗試讓它在純HTML頁面或jsfiddle.net中工作,然後從應用程序輸出代碼。 [這裏有例子](http://stackoverflow.com/questions/12796021/how-to-use-jquery-with-the-yii-framework) –

+0

如果你想在控制器中運行一些方法,你需要使用[Yii控制檯命令](http://www.yiiframework.com/doc/api/1.1/CConsoleCommand) –

+0

@TorinFinnemann:謝謝man.It工作:)) – Ajit

回答

1

如果你能更清楚地說明問題,它會更容易爲人們提供了一個很好的解決方案。

據我所知,你希望能夠在服務器端重複執行一個方法。爲此,您應輸出執行此操作的JavaScript代碼。它會是這樣的:

<script> 
setInterval(function(){ 
    $.get(<?= Yii::app()->request->baseUrl ?>/actionName"); 
}, 1000); 
</script> 
+0

你說得對。我希望能夠在服務器端重複執行一個方法。但是,我可以在控制器操作中調用此方法嗎?不是從一個角度來看。 – Ajit

+0

JavaScript駐留在客戶端(瀏覽器)。 PHP在服務器端。因此,要執行JavaScript代碼,您需要想象會發生的交互。 若要簡單測試此操作,您可以在操作中執行回顯「」。回聲的輸出將被髮送到客戶端。您可以通過轉到「查看源代碼」來檢查發送給客戶端的內容。然後,JavaScript代碼將在客戶端開始執行,向您的操作發送請求。 –

+0

Thanx的解釋:) – Ajit

0

你不能從php代碼中執行JavaScript函數就像那樣。你可以嘗試這樣的:

function actionTest(){ 
    $cs = Yii::app()->clientScript; 
    $cs->registerScript('my_script', 'setInterval(test,1000);', CClientScript::POS_READY); 
    $this->render('any_view'); 
} 
+0

在'$ this-> render('any_view')中遇到麻煩了''我不知道如何傳遞一個視圖名稱。因爲我想從一個動作中運行它。 – Ajit