我如何检查我是否从我的ajax到我的控制器的值

时间:2017-08-16 03:56:59

标签: php jquery ajax codeigniter

这是将触发登录的事件

$('#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') );
    }
}

现在我在我的控制台上获得{“错误”:“无电子邮件地址”}没有错误。有什么我想念的吗?在我的ajax上我添加了dataType:'json',我将url从base_url更改为site url

2 个答案:

答案 0 :(得分:1)

由于您有success: function(response){,因此Ajax的返回值位于变量response上,而不是email上。这样做可以解决您的问题:

success: function(response){
     email  = response;
     alert(email);
     //$('#myModal').modal('hide');
},

答案 1 :(得分:0)

1)在CodeIgniter中创建指向您自己的控制器/方法之一的链接的最佳方法是使用site_url(),而不是base_url()。使用site_url,您的网址变为:

url: '<?php echo site_url('login/identifying_usertype'); ?>',

2)jQuery的$ .ajax需要你声明一个dataType。虽然如果你把它留下来jQuery会试图猜测它是什么,但我发现它错了很多次。大多数人会使用'json':

dataType: 'json',

3)在你的控制器中,如果你声明你想要一个json数据类型,那么将它作为响应发送回来真的很容易:

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') );
   }
}