Некоторым людям нравится писать контроллеры "ajax" и публиковать их исключительно на них, но вам не нужно этого делать.Вы можете обработать запрос в том же контроллере, который обрабатывает не-AJAX-запрос.Лично я исключительно возвращаю json, но вы можете вернуть куски HTML, если это работает лучше для вас.
Ваша точная проблема неопределенная (реальный код поможет прояснить), но я думаю, что вы на неправильном пути.Никогда не используйте представление для обработки чего-либо.Используйте свой уровень контроллера, это для обработки ввода и запросов.
Пример метода контроллера, отвечающего на запрос ajax или non-ajax:
function edit_user()
{
$data['status'] = $this->user_model->save();
if ($this->input->is_ajax_request())
{
// return json string with our update status
// Something like: {"status":true}
echo json_encode($data);
exit;
}
// Load the non ajax view with the same data
$this->load->view('users/edit', $data)
}
$this->input->is_ajax_request()
является функцией Введите класс , который читает $_SERVER['HTTP_X_REQUESTED_WITH']
и проверяет, является ли его значение XMLHttpRequest
.Это должно быть верно, только если это запрос «ajax».
Вы можете упростить жизнь, заключив это в класс или функцию.Независимо от того, что вы решили сделать, не используйте слой представления для обработки данных.
Я думаю, что моя проблема в том, как мне обратиться к javascript без представления?как мне вызвать скрипт и / или куда поместить код JS в контроллер?Я чувствовал, что это было неправильное направление для обращения к коду в представлении, но я не видел, как еще это сделать.
По возможности, вы должны вставить javascript код вфайл .js
и использование тега <script>
для его загрузки в HTML-документе.Единственное другое исключение - это поместить его в файл «view» (файл, единственной целью которого является создание окончательного HTML-вывода).Другими словами, следуйте тем же правилам HTML, что и для размещения javascript, и следуйте обычным соглашениям MVC о том, где HTML принадлежит (в представлении).Код Javascript не принадлежит вашему контроллеру.Javascript не обрабатывает ваши данные, он отправляет данные на сервер.
Мне нужно открыть реальное представление, установить метатеги и впоследствии перенаправить пользователя на другой веб-сайт.
Если вы хотите загрузить представление, , а затем перенаправить (по истечении определенного времени, которое я предполагаю), вы можете сделать это с помощью javascript или <meta>
тег (но не используйте метатег, используйте js).