2016-01-03 2 views
0

У меня есть метод входа в мой контроллер, где я проверяю, есть ли такой пользователь в базе данных или нет. Я вызываю этот метод, когда нажимаем кнопку «Отправить». Одновременно я показываю логин.Как использовать Ajax и возврат в одно и то же время

В моем случае это сообщение не отображается, если есть такой пользователь. Я думаю, потому что в моем контроллере я загружаю представление.

Как я могу показать это сообщение, если есть такой пользователь, использующий Ajax, и если я верну его, как и в моем случае? Я использую Кохану. Благодаря!

Мой код:

$(document).ready(function(){ 
 

 
    $('#submit').on('click', function() { 
 

 
    if(username.length === 0 || password.length === 0) { 
 
     //...check if validation fails 
 
    } 
 
    else { 
 
     $.ajax({ 
 
     url: "/admin/signin" , 
 
     type: "POST", 
 
     data: { 
 
      "username":username, 
 
      "password":password 
 
     }, 
 
     success: function(data) { 
 
      if(data !== 'error') { 
 

 
      window.location = "/admin/index"; 
 
      } 
 
      else 
 
      { 
 
      alert('no such user'); 
 
      } 
 
     } 
 
     }); 
 
    } 
 

 
    }); 
 

 
});
public function action_signin() 
 
{ 
 

 
if ($_POST) { 
 
$is_admin = Model_Admin::signin($_POST);   
 

 
print 'success'; 
 
} else { 
 
print 'error'; 
 
} 
 
} 
 

 
$this->template->content = View::factory('admin/login_form'); 
 

 

 
}

+0

Вам удалось найти решение? – Faraz

ответ

0

Если вы хотите не загрузить шаблон 'по умолчанию' попробуйте использовать $this->auto_render = FALSE; также контроллер Kohana имеет метод is_ajax $this->request->is_ajax()

0

Вы код контроллера будет как это.

public function action_signin() 
{ 
    if($this->request->is_ajax()){ 
     $this->auto_render = FALSE; 
    } 

    if ($_POST) { 
     $is_admin = Model_Admin::signin($_POST);   
     if($is_admin){ 
      print 'success'; 
     } else { 
      print 'error'; 
     } 
    }else{ 
    $this->template->content = View::factory('admin/login_form'); 
    } 
}