нет заголовка, который подходит для этой ошибки, но вот как это происходит, у меня есть форма с кнопкой отправки, когда нажата jquery ajax вызывает контроллер, и проверка формы завершается, если она терпит неудачу, форма перерисовывается, если она передает страницу перенаправлена надомашняя страница с флеш-сообщениями и там, где происходит ошибка, перерисовывает всю страницу в контенте (нижний колонтитул верхнего колонтитула).я надеюсь, что это имеет смысл видеть, веря, поэтому вот код
примечания: «autform» - это библиотека для создания форм, «rest» - библиотека для шаблонов.
код jquery:
$("form.user_form").live("submit",function() {
$("#loader").removeClass('hidden');
$.ajax({
async :false,
type: $(this).attr('method'),
url: $(this).attr('action'),
cache: false,
data: $(this).serialize(),
success: function(data) {
$("#center").html(data);
$('div#notification').hide().slideDown('slow').delay(20000).slideUp('slow');
}
})
return false;
});
контроллер
function forgot_password()
{
$this->form_validation->set_rules('login',lang('email_or_login'), 'trim|required|xss_clean');
$this->autoform->add(array('name'=>'login', 'type'=>'text', 'label'=> lang('email_or_login')));
$data['errors'] = array();
if ($this->form_validation->run($this)) { // validation ok
if (!is_null($data = $this->auth->forgot_password(
$this->form_validation->set_value('login')))) {
$this-> _show_message(lang('auth_message_new_password_sent'));
} else {
$data['message']=$this-> _message(lang('error_found'), false); // fail
$errors = $this->auth->get_error_message();
foreach ($errors as $k => $v){
$this->autoform->set_error($k, lang($v));
}
}
}
$this->autoform->add(array('name'=>'forgot_button', 'type'=>'submit','value' =>lang('new_password')));
$data['form']= $this->autoform->generate('','class="user_form"');
$this->set_page('forms/default', $data);
if ( !$this->input->is_ajax_request()) { $this->rest->setPage(''); }
else { echo $this->rest->setPage_ajax('content'); }
}
}
function _show_message($message, $state = true)
{
if($state)
{
$data = '<div id="notification" class="success"><strong>'.$message.'</strong></div>';
}else{
$data = '<div id="notification" class="bug"><strong>'.$message.'</strong></div>';
}
$this->session->set_flashdata('note', $data);
redirect(base_url(),'refresh');
}
Я думаю, что это, как будто перенаправление перехватывает вызов ajax, и вместо того, чтобы отправить мне домашнюю страницу, она загружает домашнюю страницу вместоform.
спасибо за любую помощь с уважением