Codeigniter - 如何使用 javascript 变量重定向到控制器?($this->load->view() 不工作)

Codeigniter - How to redirect to a controller with javascript variable?($this->load->view() not working)

我正在尝试使用 TCPDF 将当前 html 页面转换为 pdf。我使用 Ajax 将 html 代码传递给 CreatePDF 控制器,但不确定为什么 "pdfreport" 视图无法打开。

在我的控制器 CreatePDF 中:

public function pdf() {
  $this->load->helper('pdf_helper'); //tcpdf helper file
  $HTMLInfo = $this->input->post('HTMLInfo'); //get html code from view
  $data['HTMLInfo'] = $HTMLInfo;
  $this->load->view('pdfreport', $data);
}

在视图中我有一个 "PDF" 按钮,单击时:

$('#pdf').click(function(){
  $.ajax({//ajax call
     type: 'post', 
     url: '<?php echo base_url('CreatePDF/pdf'); ?>',
     data: {'HTMLInfo': document.getElementById('repTable').outerHTML}, 
     success: function (data) {
     }
   });
});

如果我用html代码替换$data['HTMLInfo'],直接调用CreatePDF,加载pdf页面是没有问题的。

如果我使用:

$HTMLInfo = 'TEST'; 
<input type="button"  onClick="location.href = '<?php echo site_url("CreatePDF/pdf/{$HTMLInfo}"); ?>'" value="HTMLInfo" />

把"TEST"打印成pdf也没有问题,但是如何用"document.getElementById('repTable').outerHTML"代替"TEST"呢?

谁能帮我解决这个问题?

如果您尝试加载视图无效,则需要在控制器函数中重定向,因为 ajax 是后台任务。

例子

public function pdf() {
      $this->load->helper('pdf_helper');
      $HTMLInfo = $this->input->post('HTMLInfo');
      if($HTMLInfo != "") {
        $urisegment = base64_encode($HTMLInfo);
        redirect("controller_name/function_name/'".$urisegment."'");
      }
    }

    public function get_html($html){
        $data = base64_decode($html);
        $this->load->view('pdfreport', $data);
    }