我的家庭控制器中有一个登录/注销方法。所有页面上都有用户名和密码文本框,这些文本框由不同的控制器生成。
我有一个通用的jquery文件,用于我的所有视图,该文件使用ajax将用户名和密码从任何页面发布到主控制器登录/注销方法。但这似乎不起作用,因为这些页面是由不同的控制器而不是家庭控制器生成的。当我检查Firebug时,我看到Ajax脚本中提到的url被附加到该页面的控制器中,并且没有发生实际的重定向。
我已经看到在这种情况下通常建议使用自制的助手。但我不确定如何通过jquery ajax使用它。
家用控制器
function validate_login_user()
{
$this->load->model('model');
if ($this->sristi_model->validate_login())
{
$data = array (
'username' => $this->input->post('username'),
'is_logged_in' => true
);
$this->session->set_userdata($data);
$this->load->view('includes/logged_in.php');
//return true;
}else{
$this->load->view('includes/loginerror.php');
//return true;
}
}
JavaScript
$('#sitelogin').on('click', '.login', function(){
var username = $('#username').val();
var password = $('#password').val();
if (username == "" || password == ""){
$('#error').fadeIn(200).delay(1000).fadeOut(1000);
return false;
}else if(username !== undefined && password !== undefined)
{
$.ajax({
url:"home/validate_login_user",
type:'POST',
data:{username:username,password:password},
cache:false,
success:function(msg){
$('#sitelogin').html(msg).hide().fadeIn(800);
$('#loginerror').delay(2000).fadeOut(1000);
}
});
return false;
}else{
return false;
}
});
当我尝试通过产品控制器登录时,我在Firebug中得到这个
URL: POST validate_login_user
localhost/ci/product/categories/localhost/ci/home/validate_login_user
Status: 500 Internal Server Error
Domain: localhost
Size: 1.6 KB
Remote IP: [::1]:80
如果您发现什么,请告诉我...
我不知何故能够在通知中看到这个答案,但我在此页面上看不到它。在 ajax url 前面加上斜杠完成了这项工作,现在一切正常。
感谢发表评论的人。