Php 我的登录ajax表单不是';t在编码点火器上工作
我已经在CodeIgniter中编写了登录表单。当我写错误的数据时,它会将信息提交到数据库,它会给我错误和我想要的验证错误。但是当我写正确的用户名和密码并按下Php 我的登录ajax表单不是';t在编码点火器上工作,php,ajax,codeigniter,Php,Ajax,Codeigniter,我已经在CodeIgniter中编写了登录表单。当我写错误的数据时,它会将信息提交到数据库,它会给我错误和我想要的验证错误。但是当我写正确的用户名和密码并按下登录时,它什么也不做,但当我刷新页面时,它显示我已登录。我希望它重定向主页后,我按登录立即。我认为问题出在ajax或controller中,但我不太清楚。因为当我用正确的用户名登录并通过时,控制台中不会显示任何内容 以下是我的看法: <div id="loginmsg"></div>
登录时,它什么也不做,但当我刷新页面时,它显示我已登录。我希望它重定向主页后,我按登录立即。我认为问题出在ajax或controller中,但我不太清楚。因为当我用正确的用户名登录并通过时,控制台中不会显示任何内容
以下是我的看法:
<div id="loginmsg"></div>
<?php $attributes = array('class' => 'rex-forms', 'name' => 'loginform', 'id' => 'loginform'); ?>
<?= form_open_multipart('user/login', $attributes); ?>
<div class="form-group">
<input name="usernameforlog" id="usernameforlog" type="text" class="form-control" placeholder="Имя пользователя">
</div>
<div class="form-group">
<input name="passwordforlog" id="passwordforlog" type="password" class="form-control" placeholder="Пароль">
</div>
</div>
<div class="modal-footer">
<button type="submit" name="submitforlog" class="rex-bottom-medium rex-btn-icon btnsubmitforlog">
<span class="rex-btn-text">войти</span>
<span class="rex-btn-text-icon"><i class="fa fa-arrow-circle-o-right"></i></span>
</button>
</div>
</form>
下面是ajax文件:
$(document).ready(function() {
$("#loginform").unbind('submit').bind('submit', function() {
var form = $(this);
$.ajax({
url: form.attr('action'),
type: form.attr('method'),
data: form.serialize(),
dataType: 'json',
success:function(response) {
console.log(response);
if(response.success) {
//i want here to redirect main page
}
else {
$("#loginmsg").html(response.messages);
$.each(response.messages, function(index, value) {
var element = $("#"+index);
$(element)
.closest('.form-group')
.removeClass('has-error')
.removeClass('has-success')
.addClass(value.length > 0 ? 'has-error' : 'has-success')
.find('.text-danger').remove();
$(element).after(value);
});
}
} // /success
}); // /ajax
return false;
});
});
更改控制器中的以下代码:
if($user_id){
// Create session
$user_data = array(
'instructor_id' => $instructor_id,
'id' => $id,
'instructors_slug' => $username,
'name' => $name,
'logged_in' => true
);
$this->session->set_userdata($user_data);
$validator['success'] = true;
$validator['messages'] = array();//In case no data needs to be passed
// redirect('');//Comment this part as it will redirect and don't pass the data to the AJAX call
}else{
//Your else part
}
//here just json encode and return .
设置会话时,阵列中存在问题
未定义变量$讲师id、$id等
$user_data = array(
'instructor_id' => $instructor_id,
'id' => $id,
'instructors_slug' => $username,
'name' => $name,
'logged_in' => true
);
@杰布兰查德:我什么都做了。它在控制台中显示错误,但不在表单中显示错误;您必须清除控制台中的错误。我认为这可能与redirect()
有关。在CI中,redirect()
是PHPheader()重定向的快捷方式。因此,您要在AJAX请求完成之前重定向。如果你试图用javascript进行重定向,它将永远不会到达那里。你得到的确切错误是什么?你是否完成了console.log(response);返回false;看到你得到的反应了吗?我没有错。我什么也没有得到:D当我输入它时,它不会重定向到主页面,我应该刷新它。当我将登录表单保留为空并按submit时,它应该在输入字段下显示错误,但它没有,它在控制台中显示错误,就像在ajax调用的success函数中显示的一样。输入以下代码:if(response.success){alert(“TEST ABC 123”);return false;}它不返回任何东西这可能是Ajax调用/控制器代码的问题..很难解决..您必须调试它。@A.Aliyev-您也在加载会话库吗?打开config.php并$config['log_threshold']=1;告诉我你从洛西那里得到了什么。它登录了。但它会在刷新页面后登录。但我希望它自动重新加载页面我不是说登录作为签名我是说错误日志我做了$config['log_threshold']=1。接下来我该怎么办?
if($user_id){
// Create session
$user_data = array(
'instructor_id' => $instructor_id,
'id' => $id,
'instructors_slug' => $username,
'name' => $name,
'logged_in' => true
);
$this->session->set_userdata($user_data);
$validator['success'] = true;
$validator['messages'] = array();//In case no data needs to be passed
// redirect('');//Comment this part as it will redirect and don't pass the data to the AJAX call
}else{
//Your else part
}
//here just json encode and return .
$user_data = array(
'instructor_id' => $instructor_id,
'id' => $id,
'instructors_slug' => $username,
'name' => $name,
'logged_in' => true
);