Ajax 只是意味着您的登录控制器将返回机器可读的内容 (json/xml) 而不是 html。
您的控制器实际上只需要设置一个会话变量。
class Login extends Controller {
function __construct() {
parent::Controller();
$this->load->model('user_m');
}
function json_login() {
$user = $this->user_m->get_user($_POST['username']);
if($user->password == md5($_POST['password'])) {
$this->session->set_userdata('username',$user->username);
print json_encode($this->user);
}
else {
print json_encode(FALSE);
}
return;
}
function logout() {
$this->session->destroy();
redirect('/theloginpage');
}
}
假设您将 jquery 用于 javascript,则 ajax 调用可能会像这样工作:
$('#login_form').submit(function(event) {
event.preventDefault();
$.ajax({
type:"POST",
data:$(this).serialize(),
dataType:"json",
url:"/login/json_login",
success: function(data) {
if(data['username'] != null) {
$(this).append('<p>You are now logged in</p>');
reload_table_data();
}
else if(data == flase){
$(this).append('<p>Fail whale, wrong username or password</p>');
}
}
});
}
现在在显示数据时检查是否已在会话中设置了“用户名”。也不要忘记创建一个销毁会话的注销方法。您可以将表格数据作为 html sn-p 返回,并通过它直接插入到 DOM 或 json/xml 循环中。
登录表单可以显示在页面的任何位置,并且有很多用于 jquery、dojo、prototype 等的库,它们将提供一个对话框。