【问题标题】:Codeigniter - How to redirect to a controller with javascript variable?($this->load->view() not working)Codeigniter - 如何使用 javascript 变量重定向到控制器?($this->load->view() 不起作用)
【发布时间】:2016-09-23 19:14:32
【问题描述】:

我正在尝试使用 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" />

在pdf中打印“TEST”也没有问题,但是如何使用“document.getElementById('repTable').outerHTML”而不是“TEST”呢?

谁能帮我解决这个问题?

【问题讨论】:

  • 你需要从控制器发送 true 或 false 并在你的成功函数中检查它,如果 true 然后 location.herf="url";您无法在 ajax 方法中加载视图。

标签: javascript ajax codeigniter tcpdf


【解决方案1】:

如果您尝试加载视图不起作用,则需要在控制器功能中重定向,因为 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);
    }

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2023-04-10
    • 1970-01-01
    • 2020-05-24
    • 2011-05-15
    • 1970-01-01
    • 2021-06-25
    相关资源
    最近更新 更多