没有从ajax codeigniter中的php获得结果。?

时间:2017-04-10 07:40:41

标签: php jquery ajax codeigniter

这是我的ajax和php的小代码,我希望传递并获取登录系统。

这里我有ajax代码。

 <script>
    $("input#login_btn").on('click',function(e){
        e.preventDefault();

            var x = document.forms["loginform"]["login_username"].value;
            var x1 = document.forms["loginform"]["login_password"].value;
            var y = document.getElementById('login-error');
            var z = document.getElementById('password-error');

            if (x == "") { y.style.display ='block'; }else{ y.style.display ='none'; }
            if (x1 == "") { z.style.display ='block'; }else{ z.style.display ='none'; } 

                var d = document.forms["loginform"]["login_username"].value;
                var d1 = document.forms["loginform"]["login_password"].value;                       

            if(d != '' && d1 != ''){
                $.ajax({
                   url:"<?php echo base_url(); ?>Auth",
                   type: "POST",
                   data:{login_username: $('input#login_username').val(), login_password: $('input#login_password').val()},

                   success : function(data){                                                    
                        if(data.success == "true"){
                            var url = $('#current_loginurl').val();                 
                            window.location.href=url;                       
                        }else{
                            $('#loginform')[0].reset();
                            $("#login_fail").show('fast');
                        }
                   },
                   error : function(data){                      
                        $('#loginform')[0].reset();
                        $("#login_fail").show('fast');
                   }

                });
            }   
        });
</script>

这是我在codeigniter中的PHP代码。我在codeigniter中使用了myslqi。

public function index(){
            require_once('connect.php');

                $url =  $this->input->post('current_loginurl');
                $username =  $this->input->post('login_username');
                $password =  $this->input->post('login_password');              

                $qry = mysqli_query($con ,"select * from `user_profile` where E_Id = '".$username."'") or die(mysqli_error($con));                  
                $row = mysqli_fetch_array($qry);
                $data = mysqli_num_rows($qry);

                if(!empty($data) && $data >0){

                    $session = array(
                            'client_username' => $row['F_Name']." ".$row['L_Name']
                              );


                    $this->session->set_userdata($session);
                    $datas = array(
                        'success' => true
                    );                  
                    echo json_encode($datas);
                    //redirect($url);
                    return true;

                }else{
                    $datas = array(
                        'success' => false
                    );                  
                    echo json_encode($datas);
                    return false;
                }                   

        }   

我在这段代码中输了但是无法获得成功。任何人都可以帮助我错在哪里。如何在ajax中获得返回结果。

1 个答案:

答案 0 :(得分:0)

启用CSRF后,我们需要提交帖子数据:

data: {
      csrf_token_name: CONFIG.csrf_cookie_name
}

CONFIG在CI视图文件(.php)中创建,并与您的控制器或模板系统一起加载:

<script type="text/javascript">
var CONFIG = {
            'base_url': '<?php echo base_url(); ?>',
            'csrf_token_name' : "<?php echo $this->security->get_csrf_token_name(); ?>",
            'csrf_cookie_name' : "<?php echo $this->security->get_csrf_hash(); ?>"
        }
</script>

备注:当第二次拨打CSRF再生时(config.php),它将发出错误403 (检查浏览器控制台中的网络选项卡)。要么为整个应用程序关闭CSRF再生 https://security.stackexchange.com/questions/22903/why-refresh-csrf-token-per-form-request

或者仅仅通过在第435行($config['csrf_regenerate'] = TRUE;下方)的config.php中的CSRF部分添加这些用于ajax的方法来执行此操作:

$no_regen = array(
    '(HMVC-module/)controller/method'
);

if (isset($_SERVER["REQUEST_URI"])) {
    foreach ($no_regen as $csrf_page){
        if(stripos($_SERVER["REQUEST_URI"], $csrf_page) !== FALSE) {
            $config['csrf_regenerate'] = false;
            break;
        }
    }
}

奖励评论:请验证您的POST数据。