php - 如何在codeigniter中判断是否是Ajax请求?

标签 php ajax codeigniter-3

我已经通过ajax登录到我的应用程序。当用户在登录之前,尝试访问管理员主页(http://localhost/ci3/admin/Adminhome),此时它将他重定向到管理员登录页面(http://localhost/ci3/admin/Adminlogin)。以用户身份登录后尝试访问管理员主页,就会成功。现在我想找到ajax请求。我尝试过类似下面的方法,

管理 Controller

<?php
class Admin_controller extends CI_Controller{
    function __construct()
    {
        parent::__construct();
        $this->load->model("Adminmodel","",true);   
        $this->load->library('user_agent');
        
        $adminId =  $this->session->userdata('cp_adminid');

        if($adminId == null){
            if(!empty($_SERVER['HTTP_X_REQUESTED_WITH']) && strtolower($_SERVER['HTTP_X_REQUESTED_WITH'])=='xmlhttprequest'){
                echo "it is ajax request";
            } else {
                echo "it is not ajax request";
            }
        } else {
            
        }
    }
?>

admin.js

$('#adminloginform').validate({
    
    errorClass: 'error',
    validClass: 'valid',
    errorPlacement: function(error, element) {
             error.insertAfter(element);
    },
    rules: {
        username:{
            required: true,
            
        },
        password:{
            required: true,
            minlength: 6,
        }
    },
    messages:{
        username: {
            required: "Email is required",
            
    },
        password: {
            required: "Password is required",
            minlength: "Atleast 6 characters",
    }
    },
    submitHandler: function(){
        var admin=$('#adminloginform').serializeArray();
     
        $.post("<?php echo base_url()?>admin/Adminlogin/auth",admin,function(data){
                    
            if((data.result == 1) && (data.row.view == 1 || data.row.edit == 1 || data.row.add == 1 || data.row.deleteRole == 1 )){
                window.location="<?php echo base_url()?>admin/Adminhome";
            } else if (data.result == 1) {
                window.location="<?php echo base_url()?>admin/Userhomepage";
            } else {
                noty({ text: 'Username or Password is incorrect',type: 'error',modal:true,timeout:1000});
            }
            
            
            //$(".simplemodal-close").trigger("click");
        },"json");
    
    }
        
});

最佳答案

如果您在应用程序中使用它,为什么不创建一个标志。 当您从 ajax 调用时,将其设置为 true,默认情况下将其设置为 false。

class Admin_controller extends CI_Controller{
    function __construct($AjaxFlag = false)
    {
        parent::__construct();
        $this->load->model("Adminmodel","",true);   
        $this->load->library('user_agent');

        $adminId =  $this->session->userdata('cp_adminid');

        if($adminId == null){
            if($AjaxFlag){
                echo "it is ajax request";
            } else {
                echo "it is not ajax request";
            }
        } else {

        }
    }

关于php - 如何在codeigniter中判断是否是Ajax请求?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42272264/

相关文章:

php - FFMPEG:如何在 FFMPEG Php 中使用 S3 url

javascript - 使用 Javascript 更改 CSS 值

php - CodeIgniter,使用 Redis 作为 session 管理器

javascript - 如何在 php-codeigniter 中将数据加载到页面的特定部分而不刷新整个页面

mysql - 如何扩展 CI3 $this->db

php - ZF : How to add default prefix path to form elements so I don't have to set it everytime?

javascript - var x ="<?php echo strtotime($uEvents[' start']);?>"; 给出了不同的结果

php - Mysql服务器数据插入错误

php - Symfony2 Ajax 无限滚动

javascript - 如何创建更新模型属性的按钮?