Это событие, которое вызовет вход в систему
$('#btnLogin').click(function(){
//var data = $('#loginForm').serialize();
var email = $('#loginEmail').val();
var password = $('#loginPass').val();
var result = '';
if( email.trim() =='' ){
//username.addClass('alert-danger');
alert('email is required');
}else{
//username.removeClass('alert-danger');
result +='1';
}
if( password.trim()==''){
alert('password is required');
}else if(password.length < 8){
alert('password length must be atleast 8 characters');
}else{
//password.removeClass('alert-danger');
result +='2';
}
/*var postData = {
'email' : email,
'password' : password
};*/
if (result=='12') {
$.ajax({
type: "POST",
url: '<?php echo site_url('login/identifying_usertype'); ?>',
data: { email : email, password : password },
dataType: 'json',
success: function(response){
//console.log(response);
//alert(email);
$('#myModal').modal('hide');
},
error: function (XHR, status, error){
console.log('error', error);
}
});
}
});
Это мой контроллер:
public function identifying_usertype()
{
if( $email = $this->input->post('email') )
{
echo json_encode( array('email' => $email) );
}
else
{
echo json_encode( array('error' => 'No email address') );
}
}
Теперь я получаю {«error»: «Нет адреса электронной почты»} на моей консоли, нет ошибки. Я что-то упускаю? На моем AJAX я добавил dataType: ‘JSON’, я изменил URL с base_url на URL сайта
Так как у вас есть success: function(response){
возвращаемое значение Ajax находится в переменной response
и не на email
, Таким образом, это решит вашу проблему:
success: function(response){
email = response;
alert(email);
//$('#myModal').modal('hide');
},
1) Лучший способ создать ссылку на один из ваших собственных контроллеров / методов в CodeIgniter — это использовать site_url (), а не base_url (). С site_url, ваш URL становится:
url: '<?php echo site_url('login/identifying_usertype'); ?>',
2) $ .ajax jQuery требует, чтобы вы объявили dataType. Хотя, если вы пропустите это, jQuery попытается угадать, что это такое, я обнаружил, что это много раз неправильно. Большинство людей будут использовать «JSON»:
dataType: 'json',
3) В вашем контроллере, если вы заявляете, что хотите использовать json dataType, очень легко отправить его обратно в ответ:
echo json_encode( array('email' => $email) );
4) В вашей функции успеха Ajax вы можете сделать так:
success: function( response ){
if( response.email ){
console.log(response.email);
}else{
console.log('email not verified');
}
}
5) Наконец, вы не показываете код, который бы создал событие для выполнения вашего ajax. Если вам нужна помощь с этим, дайте мне знать, и я покажу вам.
6) Весь сетевой трафик доступен для просмотра в консоли вашего браузера. Проверьте это, так как это очень полезно при создании этих запросов ajax.
Что касается вашего комментария, как об этом в контроллере:
public function identifying_usertype()
{
if( $email = $this->input->post('email') )
{
echo json_encode( array('email' => $email) );
}
else
{
echo json_encode( array('error' => 'No email address') );
}
}