我正在使用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数组,两者都是是空的。
答案 0 :(得分:1)
我不允许发表评论,因此我将其作为答案发布。
以下是我对该问题的解决方案和解释。这与CodeIgniter无法获取JSON
有关。 jQuery
做了一些引人入胜的技巧,并将您的数据转换为form-data-x
,这就是它运作的原因。
解决方案是使用$this->input->raw_input_stream
来抓取您的JSON
并使用php
json_decode
对其进行解码。检查下面的完整答案和代码:
答案 1 :(得分:0)
我通过在按钮事件中执行ajax来解决这个问题(因为我手动传递参数(var x =&#34; some_argument&#34;)进行测试)并且它有效,我不确定为什么这样做有所作为,但它有效(如果有人知道为什么我想知道)。