2013-11-27 4 views
2

Я пытаюсь вызвать функцию javascript внутри моего контроллера, чтобы отобразить предупреждающее сообщение на странице, если проверка, которую я выполняю в функции индекса этого контроллера, является ложной.Как вызвать функцию javascript в указателе контроллера в codeigniter?

Вот мой код:

<?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'); 
} 
?> 

У меня есть функция JS, хранящуюся в экстерном JS файл, который я хотел назвать в этом TODO. Следует назвать так:

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

Поскольку условие проверки делается в index() контроллера, я не знаю, как назвать эту функцию JS. , если он был вызван событием в представлении, я бы создал метод ajax для выполнения этой функции. но как я могу вызвать функцию javascript в index()?

Я уже проверял этот ответ: Calling javascript function from controller codeigniter, но это мне не помогло.

+0

понятия не имею, что вы просите. javascript запускается в браузере клиента, а не в php. Вам нужно сделать лучшую связь в вопросе между двумя – charlietfl

+0

проверить мой ответ .. u может тогда понять .. извините, если я не был ясен .. – 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

Но вы сказали, что вам нужно вызвать функцию JS во внешнем JS-файле. Ваш ответ - не что иное, как отправка данных на ваш взгляд. Вы можете сделать это по-разному. – Mariyo

+0

, но функция show_msg_xajax() находится во внешнем js-файле ... Я не пытался вызвать js-файл. Я хотел вызвать функцию js внутри внешнего js-файла (название вопроса говорит об этом ...) :), но спасибо в любом случае! – Periback

1

Вам необходимо добавить свой файл с функцией JS как вид:

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

Я нашел решение .. Я буду опубликуйте его как ответ – Periback

Смежные вопросы