【发布时间】:2021-12-12 14:21:20
【问题描述】:
目前我有一个表格,显示产品所有状态的计数。现在这些计数是可点击的,并导致另一个页面显示被点击的任何项目的详细数据。我可以通过将其放入 URL 中来获取此数据
<a target='_blank' href='".site_url('reports/lists?source=' . $title . '&status=' . $status) . "'>
这会正确地将我在 URL 中单击的产品的数据。
现在我正在尝试从 URL 中获取这些数据,并根据 URL 中存在的值相应地过滤数据,但是即使在我使用了 $leadsource = $this->input->get('status');
查看类:
<?php
$sess=$this->session->userdata();
$post = array('fstatus'=> $sess['fstatus'],'fsource'=> $sess['fsource']);
$postd = json_encode(array_filter($post));
$leadstatus = $this->input->get('source');
?>
<table id="item-list">
<tr>
<th>Ref.No#</th>
<th>Source</th>
</tr>
</table>
<script>
$(document).ready(function() {
function sendreq(){
setpostdatas();cleartable();getleads();
}
var userrole = "<?php echo $this->session->userdata('clientrole')?>";
var leadsource = "<?php echo $leadsource ?>";
var slug = '<?php echo $slug?>';
var postd = '<?php echo $postd; ?>';
if( userrole > 1 && userrole != 5){
$('#item-list').DataTable({
"processing": true,
"stateSave": true,
"serverSide": true,
"ordering": false,
"createdRow": function( row, data, dataIndex){
$(row).has( "div.overdueupdate" ).css('background-color','#FFC7CE');
},
"ajax": {
url: "<?php echo site_url(); ?>reports/loadLeads",
data: {slug: slug, postdata: postd, leadsource: leadsource},
type : 'POST',
"dataSrc": function ( d ) {
d.myKey = "myValue";
if(d.recordsTotal == 0 || d.data == null){
$("#item-list_info").text("No records found");
$("#item-list_processing").css("display","none");
}
return d.data;
}
},
'columns': [
{"data": "id", "id": "id"},
{"data": "refno", "refno": "refno"},
{"data": "source", "source": "source"},
]
});
}
控制器类:
public function loadLeads($p=''){
$leadsource = $this->input->get('status');
if(isset($_POST['postdata'])){
if($_POST['postdata'] != null && $_POST['postdata'] != 'null'){
$post=$_POST['postdata'];
}
$post = json_decode($post,true);
unset($post['slug']);
unset($post['page']);
$sort = $post['afsort'];
if($sort == "asc"){
$sortQ = 'l.updated_date asc,';
}else if ($sort == "desc"){
$sortQ = 'l.updated_date desc,';
}
}
$offset = (int)$_POST['start'] ;
$pstdatas = explode(',', $_POST['postdata']);
unset($pstdatas['item-list_length']);
if($this->session->userdata('clientrole') == 1 || $this->session->userdata('clientrole') == 5 ){
$content['leads']=$this->leads_model->get_pagination($_POST['length'],$offset,$where,'',false,$sortQ?$sortQ:'l.assign_status =\'Unassigned\' desc,',$all,$leadsource);
}else{
$content['leads']=$this->leads_model->get_pagination($_POST['length'],$offset,$where,'',false,$sortQ?$sortQ:'l.assigned_date desc,',$all,$leadsource);
}
public function lists($slug='')
{
$this->load->model(array('crm/crm_model'));
$content['propertyrefnos']=$this->crm_model->property_refnos();
$content['is_mobile'] = $this->ismob;
$content['sources']= $this->sources_model->get_active(array(),'id,title','title asc' );
}
模型类:
function get_pagination($num, $offset, $cond='',$order='',$unlimit=false,$add_order='',$all='',$leadsource)
{
$this->db->select("l.*");
$sess=$this->session->userdata();
if(is_array($cond) && count($cond)>0){ $this->db->where($cond); }
if(empty($cond)){
if($sess['afstatus']==''){
$leadsource = $this->input->get('status');
if($searchdata['keyword'] !='' || $searchdata['fstatus'] !='' || $searchdata['fproject'] || $searchdata['fdevelop'] || $all != ''){
$this->db->where_in('lead_status',array(1,8,9,2,3,4,10,11));
$this->db->where('lead_source',$leadsource);
}
else {
$this->db->where_in('lead_status',array(1,8,9,11));
$this->db->where('lead_source',$leadsource);}
}
}
....
$query = $this->db->get();
return $query->result_array();
如您所见,我已尝试在我的控制器类和模型中添加$leadsource = $this->input->get('status');,但它们都没有返回我想要的 url 数据。但是将此代码放在我的列表函数控制器下会返回来自 URL 的数据,但我希望它发生在我的 loadLeads 函数中。
我在 loadleads 控制器中添加了以下内容,并且 source 的输出始终为空:
$output = array(
"source" => $leadsource,
"data" => $data
);
echo json_encode($output);
exit();
【问题讨论】:
-
您尝试过什么来解决问题?你被困在哪里了?
$leadsource包含什么? -
$leadsource应该包含我的 URL 数据。所以到目前为止,如果我的网址是http://localhost/reports/lists?source=Product1&status=4,那么leadsource 应该包含Product1。现在,当我在我的列表控制器中添加此语句时,它可以工作,但是当它添加到我的 loadLeads 控制器时它不起作用。这就是我被困的地方 -
$leadsource包含什么?不要猜测,不要解释,甩掉它 -
是的,我已经在列表控制器和 loadLeads 控制器中完成了 var_dump($leadsource)。它在列表控制器中时显示,但在 loadLeads 中时不显示。当我尝试将其放入负载引导并刷新页面时,它会给出
DataTables warning: table id=item-list - Invalid JSON response.
标签: php jquery ajax codeigniter