2013-11-27 55 views
2

我想在我的控制器裏面調用一個javascript函數來在頁面中顯示一條警告消息,如果我在這個控制器的索引函數中做的驗證是錯誤的。如何在codeigniter中的控制器的索引中調用javascript函數?

這裏是我的代碼:

<?php 
public function index() { 

    $this->load->model('uploads_m'); 
    $this->load->helper('form'); 
    $template_vars = Array(); 

    $this->load->vars($template_vars); 

    $data = Array(); 
    $data['currentUploadId'] = $this->uploads_m->get_lastUploadId(); 
    $data['fileTypes'] = $this->uploads_m->getAllFileTypes(); 

    $data['existingFiles'] = Array(); 
    if (isset($data['currentUploadId'])) { 
     $data['existingFiles'] = $this->uploads_m->get_UploadedFilesFromUploadId($data['currentUploadId']); 
    }else { 
     // TODO create warning message to tell that uploadid was not generated 
    } 
    $this->load->view('include/header'); 
    $this->load->view('upload_files', $data); 
    $this->load->view('include/footer'); 
} 
?> 

我有存儲在,我想在這個TODO調用一個外部的js文件中的JS功能。 它應該被稱爲是這樣的:

show_msg_xajax("warning", "System was unable to find an Upload ID"); 

由於檢驗條件則在控制器的index()正在做,我不知道該怎麼稱呼這個js功能。 如果它被視圖中的事件調用,我會創建一個ajax方法來執行這個函數。但是我怎樣才能在index()中調用它的javascript函數呢?

我已經檢查了這個答案:Calling javascript function from controller codeigniter但它沒有幫助我。

+0

不知道你是問。 JavaScript運行在客戶端瀏覽器中,而不是在PHP中。你需要更好地連接兩個 – charlietfl

+0

之間的問題檢查我的答案..你可能會明白..對不起,如果我不清楚.. – Periback

+0

爲什麼你不這樣做在視圖上 –

回答

2

我找到的解決方案是直接發送功能,該頁面的頁腳...所以我增加了一個新變量我有一個頁腳模板(我稱之爲javascripts)。 在控制器指數函數我所做的:

if (isset($data['currentUploadId'])) { 
     $data['existingFiles'] = $this->uploads_m->get_UploadedFilesFromUploadId($data['currentUploadId']); 
} else { 
     // TODO criar alerta de erro no sistema que não gerou UPLOADID 
     $template_vars['foot_javascripts_inline'] = 'show_msg_xajax("error", "System was unable to find an Upload ID");'; 
} 

,在我的頁腳模板我加:

if (isset($foot_javascripts_inline)) { ?> 
    <script> <?php echo $foot_javascripts_inline ?> </script> 
} 

不管怎樣,謝謝您的幫助

+0

但你說你需要在extern JS文件中調用JS函數。您的答案只是將數據發送到您的視圖。你可以在很多方面做到這一點.. – Mariyo

+0

但show_msg_xajax()函數是在一個外部的js文件中......我並沒有試圖調用一個js文件..我想在外部js文件中調用一個js函數(該問題的標題說...):),但無論如何,謝謝! – Periback

1

你需要用JS函數添加您的文件作爲一個觀點:

$this->load->view('path-to-js-message'); 
+0

我找到了解決方案..我會發布它作爲答案 – Periback

相關問題