CodeIgniter如何将listsreport获取的GET参数status传递给ajaxleadsreport
问题原因
你首次访问listsreport页面时的GET参数只会存在于那次请求里,后续ajax调用ajaxleadsreport是独立的新请求,不会自动带上之前的GET参数,所以需要手动透传,按照以下步骤修改即可:
具体修改步骤
- 修改
listsreport控制器方法,把获取到的$status1传递给indexreport视图
public function listsreport($slug='') { $status1 = $this->input->get('status'); $content['status1'] = $status1; // 新增这行,将参数传入视图 $main['content']=$this->load->view('crm/leads/indexreport',$content,true); }
- 修改indexreport视图,把
status1带入ajax请求,二选一即可:
- 方式一:在页面的
#objlistform表单内添加隐藏域,表单序列化时会自动带上参数
<input type="hidden" name="status" value="<?php echo $status1;?>">
- 方式二:直接修改
getleads方法的ajax请求参数,手动追加参数
function getleads(p){ var formData = $('#objlistform').serializeArray(); formData.push({name: 'status', value: '<?php echo $status1;?>'}); $.ajax({ type: "post",dataType:"json",async:false,cache:true, url: "<?php echo site_url('leads/ajaxleadsreport'); ?>"+( parseInt(p)>0?'/'+p:''), data: formData, success: function(e){$('#leadswrap').hide().html(e.html).fadeIn('slow');} }); return false; }
- 修改
ajaxleadsreport控制器方法,接收传过来的status参数并传入视图
public function ajaxleadsreport($p='') { $content['status1'] = $this->input->post('status'); // 接收ajax传递的status $output = array( 'html'=>$this->load->view('crm/leads/ajaxleadsreport',$content, true)); echo json_encode($output); }
- 修正ajaxleadsreport视图的变量错误,直接用控制器传递的参数即可
<?php $sess=$this->session->userdata(); // 删掉原来用get方式拿参数的代码,直接用控制器传过来的$status1即可 $post = array('fstatus'=> $status1,'fpriority'=> $sessn['fpriority']); // 修正原代码的变量名笔误 $postd = json_encode(array_filter($post)); ?>
内容的提问来源于stack exchange,提问作者H2O
相关产品推荐
相关产品推荐

