我使用的是codeigniter,ajax没有重定向到主页,当尝试使用错误的pass =>登录时,它会重定向到包含此页面的页面
{"st":0,"msg":"Invalid Username or Password"}
并尝试使用正常工作的密码
{"st":1}
任何人都可以提供帮助吗? 这是 Ajax代码
<script type="text/javascript">
$(document).ready(function() {
$('#frm').submit(function(){
$.post(
$('#frm').attr('action'),
$('#frm').serialize(),
function( data )
{
if (data.st == 0)
{
$('#validation-error').html(data.msg);
}
else if (data.st == 1)
{
window.location.href = <?php echo site_url('home'); ?>;
}
},
'json'
);
return false;
});
});
</script>
登录控制器
<?php
if ( ! defined('BASEPATH')) exit('No direct script access allowed');
class signin extends CI_Controller
{
function __construct(){
parent::__construct();
$this->load->library('form_validation');
$this->load->model('user_model');
}
public function index(){
$this->load->view('signin_view');
}
public function sayed(){echo "I love you";}
public function do_login() {
$this->form_validation->set_rules('username', 'Username', 'trim|required|xss_clean|min_length[4]|max_length[20]');
$this->form_validation->set_rules('password', 'Password', 'trim|required|xss_clean|min_length[4]|max_length[20]');
if ($this->form_validation->run() == FALSE)
{
echo json_encode(array('st'=>0, 'msg' => validation_errors()));
}
else {
$data = array(
'username' => $this->input->post('username'),
'password' => $this->input->post('password')
);
$result = $this->user_model->login($data);
if ($result == TRUE) {
$username = $this->input->post('username');
$result = $this->user_model->read_user_information($username);
if ($result != false) {
$session_data = array(
'username' => $result[0]->username,
'email' => $result[0]->email,
);
$this->session->set_userdata('logged_in', $session_data);
echo json_encode(array('st'=>1));
}
} else {
echo json_encode(array('st'=>0, 'msg' => "Invalid Username or Password"));
}}}
家庭控制器
<?php if ( ! defined('BASEPATH')) exit('No direct script access allowed');
class Home extends CI_Controller{
function __construct(){
parent::__construct();
}
public function index(){
if($this->session->userdata('logged_in'))
{
$this->load->view('home_view');
}
else
{
redirect('login', 'refresh');
}
}
public function do_logout(){
$sess_array = array(
'username' => ''
);
$this->session->unset_userdata('logged_in', $sess_array);
redirect(signin);
}
}
?>
提前致谢
答案 0 :(得分:0)
window.location.href = "<?php echo site_url('home'); ?>";
或
window.location.href = "<?php echo base_url()."index.php/home" ?>";
使用前base_url()
加载网址
$this->load->helper('url');
答案 1 :(得分:0)
<script type="text/javascript">
$(document).ready(function() {
$('#frm').submit(function(){
$.post(
$('#frm').attr('action'),
$('#frm').serialize(),
function( data )
{
var data = jQuery.parseJSON(data);
if (data.st == 0)
{
$('#validation-error').html(data.msg);
}
else if (data.st == 1)
{
window.location.href = <?php echo site_url('home'); ?>;
}
},
'json'
);
return false;
});
});
我在js中改变了一些东西,请考虑一下
答案 2 :(得分:0)
您可以轻松调试代码并查找错误。
alert('<?php echo site_url('home'); ?>');
并检查网址。die("debug");
。我相信你会犯下你的错误。
答案 3 :(得分:0)
您正在重定向到该字符串,因为您尚未停止提交页面。请注意我在表单提交处理程序中所做的更改。
<script type="text/javascript">
$(document).ready(function() {
$('#frm').submit(function(event){
// Prevent page to submit.
event.preventDefault();
$.post(
$('#frm').attr('action'),
$('#frm').serialize(),
function( data )
{
if (data.st == 0)
{
$('#validation-error').html(data.msg);
}
else if (data.st == 1)
{
window.location.href = <?php echo site_url('home'); ?>;
}
},
'json'
);
return false;
});
});
</script>