Codeigniter 如何在控制器中接收 ajax post 数据

Posted

技术标签:

【中文标题】Codeigniter 如何在控制器中接收 ajax post 数据【英文标题】:How does Codeigniter receive the ajax post data in controller 【发布时间】:2017-01-20 13:03:10 【问题描述】:

我正在尝试使用 CodeIgniter 开发我的项目的前端客户端。

但是带有 CI 的 ajax 让我很困惑。

这是我的 ajax:

$.ajax(
    url : "welcome/login"
    type : "POST",
    dataType : "json",
    data : "account" : account, "passwd" : passwd,
    success : function(data) 
        // do something
    ,
    error : function(data) 
        // do something
    
);

还有控制器:

public function login() 
    $data = $this->input->post();
    // now I can get account and passwd by array index
    $account = $data["account"];
    $passwd = $data["passwd"];

现在我可以通过数组索引获取帐户和密码,但是如何将接收到的数据转换为对象,以便我可以得到如下属性:$data->account

谢谢!

【问题讨论】:

尝试使用url : "<?php echo base_url('welcome/login');?>" 并确保您已在config.php 中设置了base_url 【参考方案1】:

改变你的 ajax 这个:

$.ajax(
        url : "<?php echo base_url(); ?>welcome/login"
        type : "POST",
        dataType : "json",
        data : "account" : account, "passwd" : passwd,
        success : function(data) 
            // do something
        ,
        error : function(data) 
            // do something
        
    );

改变你的控制器:

public function login() 
    //$data = $this->input->post();
    // now I can get account and passwd by array index
    $account = $this->input->post('account');
    $passwd = $this->input->post('passwd');

我希望这对你有用...

【讨论】:

【参考方案2】:

在 ajax 请求中请使用 base_url('welcome/login'),像这样

$.ajax(
        url : "<?php echo base_url('welcome/login'); ?>"
        type : "POST",
        dataType : "json",
        data : "account" : account, "passwd" : passwd,
        success : function(data) 
            // do something
        ,
        error : function(data) 
            // do something
        
    );

在控制器中这样使用

public function login() 
    $account = $this->input->post('account');
    $passwd = $this->input->post('passwd');

我认为这是工作:)

【讨论】:

【参考方案3】:

Home 是控制器名称,login_data_submit 是函数名称

$.ajax(
        data:'userName':userName,'loginpassword':loginpassword,
        url:'<?php echo base_url(); ?>index.php/Home/login_data_submit',
        type:'post',
        success:function(data) 
            alert(data);
        );

控制器类

public function login_data_submit()
        $data=array(

            'username'=>$this->input->post('userName'),
            'loginpassword'=>$this->input->post('loginpassword'),
        );
            

【讨论】:

以上是关于Codeigniter 如何在控制器中接收 ajax post 数据的主要内容,如果未能解决你的问题,请参考以下文章

如何通过 jQuery+Codeigniter 获取值并显示在输入字段中?

codeigniter 从 url 获取值

Codeigniter + Angular Js:如何接收 JSON 数据

将 JSON 发布到 Codeigniter 控制器

在 ci-merchant 库 codeigniter 中接收更多响应数据

如何在 Codeigniter 4 中扩展控制器?