2014-11-24 65 views
0

我必須從我的模型或控制器調用一個javascript函數。我可以從視圖文件中調用它,但是如何直接從Model調用JS函數。如何在Cakephp中的模型或控制器中調用javascript函數?

有沒有辦法做到這一點?

+0

你應該只調用從視圖客戶端代碼。你想達到什麼目的? – DevDonkey 2014-11-24 09:06:27

+0

我有一個通知模型。從afterSave函數,我想調用JS推送通知函數。 – 2014-11-24 09:07:55

+0

解決方案是調用控制器函數並將js代碼寫入視圖文件。但有沒有什麼辦法可以直接從Model中調用它? – 2014-11-24 09:09:05

回答

2

PHP是一種服務器端語言。這意味着PHP文件將在HTTP服務器上得到處理,然後將生成的HTML頁面交付給客戶端。

Javascript(JS)在客戶端(瀏覽器)上解釋並與HTML和其他遠程資源接口。

由於這個模型,PHP和JS對彼此一無所知。所以直接從PHP文件調用JS是不可能的。

如果你正在尋找讓客戶端瀏覽器調用JS功能和PHP腳本定義,你可以使用echo(JS的函數)和一些字符串連接值

//this is an example and will not run.  
echo "<script>myJsFunction('" . $arg1 . "','" . $arg2 . "')</script>"; 

這將嵌入JS函數調用返回給客戶端的HTML頁面。一旦客戶端呈現HTML頁面,它將在它發生時執行函數調用。

如果你能舉一個你想要做的例子,我可能會給你一個更準確的答案。

對於客戶端服務器架構和那裏的東西得到執行的一個更深層次的解釋看看Web Browser Client Server Architecture

1

沒有,嘗試瞭解MVC模式,這個想法是,該模型是意識到觀點和不一定是。你也不能用php調用JS,這是一種服務器端語言,並且不知道有關客戶端腳本的任何信息。

你想要的是實現長輪詢。我建議您在嘗試實現某些功能之前學習並瞭解所涉及的基本技術。

+0

我正在通過模型和控制器發送通知。每個通知在數據庫中都有一個條目。現在,在通知模型中,我寫了一個afterSave方法。另一方面,我用JS編寫函數來發送實時通知。 現在,我希望在DB中保存通知後,調用JS函數將通知發送到FireBase Server。我也可以做到這一點,但在這種情況下,我將不得不檢查每個活動並多次添加我的代碼。這就是爲什麼我想在保存後使用它。 – 2014-11-24 10:35:51

+0

我知道MVC和推技術。我也可以在查看文件中做到這一點,但問題是如何從模型或控制器調用JS函數。基本上,應該在afterSave函數中觸發該函數,以便我不會錯過任何通知。 – 2014-11-24 10:43:59

+2

我可以向你保證,你*不*根據你最後的評論瞭解它。 – burzum 2014-11-24 10:53:20

相關問題