Простой, надежный способ:
Убедитесь, что ваша страница использует $this->load->view()
для загрузки фрагмента представления (HTML, который создает календарь) отдельно от верхнего, нижнего колонтитула и т. Д.
Когда вы делаете AJAX-вызов на change_dates()
, заставьте его сделать свое дело, затем загрузите только этот файл просмотра, передавая новые данные с $this->load->vars()
или $this->load->view('calendar', $data)
.Если вам нужно только загрузить представление, если это AJAX-запрос, просто определите вызов AJAX:
public function change_dates()
{
$month = $this->input->post('month');
$year = $this->input->post('year');
$dates = $this->planner_model->create_date_list($month, $year);
if ($this->input->is_ajax_request()) // Available as of CI 2.0
{
$data['dates'] = $dates;
$this->load->view('calendar', $data);
// You may need to load other data here, If so, consider a common function that
// can be shared with your main view to render the calendar
}
}
В вашем jQuery вы будете ожидать html в качестве возвращаемого значения.Просто возьмите значение и загрузите его в ваш div или там, где отображается календарь с помощью функций html () или load () jQuery.По сути, вы просто перезагружаете все, что обеспечивает правильный вывод.
$.get(url, function(response) {
$('#main_content').html(response);
}, 'html');// will usually use auto detection
// Or when you KNOW you're expecting HTML
$('#main_content').load(url);
// Or without the ajax detect (slower, less recommended)
$('#main_content').load(url + ' #main_content');
Точный, сложный способ:
Используйте вышеуказанные методы, но echo /выйдите из json_encode () данных в любую нужную форму, затем убедитесь, что вы ожидаете возвращаемое значение json от вашего jQuery.Теперь вы получите массив, с которым вы можете манипулировать документом по вашему выбору.
Если вы используете более старую версию, чем 2.0 - Пора обновить !, но здесьэто функция, которую они используют для обнаружения ajax (не так уж много):
public function is_ajax_request()
{
return ($this->server('HTTP_X_REQUESTED_WITH') === 'XMLHttpRequest');
}