无法从Code Igniter中的JQuery Ajax请求中检索Post数据

时间:2015-06-11 14:57:04

标签: php jquery ajax codeigniter

我正在使用AJAX创建过滤机制,在我的代码中,我从过滤器字段中获取数据并通过AJAX请求将它们发送到Controller,当我收到数据时,我相应地更新了表。

这是我的Ajax脚本:

var suppliername = "Apple";
jQuery.ajax({            
    type: "POST",           
    url: "<?php echo base_url(); ?>index.php/Welcome/get",            
    dataType: "json",
    data: {
        supplier_name: suppliername,
    },
    success: function(html){
        console.log("yay");
        hot.loadData(html);         
    }        
}); 

这是我的控制器:

public function get(){
        $where="";

        $field="supplier_name";
        $value=$this->input->post($field);
        if($value!= null){
            $supplier_name = $value;
            $where = $where.$field.'="'.$value.'"';
            $where = $where." AND ";
        }
        else{
            $where = $where.$field.'='.$field;
            $where = $where." AND ";
        }

        $field="category";
        $value=$this->input->post($field);
        if($value!= null){
            $supplier_name = $value;
            $where = $where.$field.'="'.$value.'"';
            //$where = $where." AND ";
        }
        else{
            $where = $where.$field.'='.$field;
            //$where = $where." AND ";
        }

        echo json_encode($this->inventory_m->get(null,$where));
        die();
    }

当我手动编辑控制器中的值时,过滤器工作正常,但是当我使用$ this-&gt; input-&gt; post($ field)时它什么也没做,我试图打印get和post数组,两者都是是空的。

2 个答案:

答案 0 :(得分:1)

我不允许发表评论,因此我将其作为答案发布。

以下是我对该问题的解决方案和解释。这与CodeIgniter无法获取JSON有关。 jQuery做了一些引人入胜的技巧,并将您的数据转换为form-data-x,这就是它运作的原因。

解决方案是使用$this->input->raw_input_stream来抓取您的JSON并使用php json_decode对其进行解码。检查下面的完整答案和代码:

Retrieve JSON POST data in CodeIgniter

答案 1 :(得分:0)

我通过在按钮事件中执行ajax来解决这个问题(因为我手动传递参数(var x =&#34; some_argument&#34;)进行测试)并且它有效,我不确定为什么这样做有所作为,但它有效(如果有人知道为什么我想知道)。