gpt4 book ai didi

javascript - 将 Javascript 变量传递给 CakePdf

转载 作者:行者123 更新时间:2023-12-03 11:25:23 24 4
gpt4 key购买 nike

我需要将一个变量(实际上是大量的 HTML,通过 JavaScript 动态生成)传递到“ View ” Controller ,该 Controller 将输出 PDF(使用 CakePdf 插件/wkHtmlToPdf)。

我已经通过 Ajax 尝试过:

    $.ajax({
type: "POST",
url: "<?php echo $this->webroot . $this->params["controller"]; ?>/view/"+$id+".pdf",
data: {id: $id, matrix: $matrix.html()},
success: function(data){
console.log(data);
}
});

它似乎确实返回了包含 PDF 流的data,但是我无法将其发送到浏览器。 (这是由插件完成的,所以我无法回应它 - 插件可能已经尝试这样做,但由于请求是在后台完成的,所以它不起作用)。

我还尝试使用 postLink 方法来生成按钮。

<li><?php  echo $this->Form->postLink(__('Button'), array('action' => 'view', $project['Project']['id'].'.pdf'), null); ?> </li>    

在生成 PDF 方面,它确实有效。但我不知道在这种情况下如何传递 JavaScript 变量($matrix)。

有什么想法吗?

最佳答案

我不确定这是否是最优雅的答案(很可能不是),但我能够通过使用隐藏表单提交数据来解决这个问题。

    <form action="projects/view/" name="frmPrint" id="frmPrint" style="display:none;" method="post">
<input id="printData" type="hidden" name="_method" value="POST">
</form>
<a id="printMatrix">Print</a></li>

在提交表单之前,我使用 JavaScript (jQuery) 随时更改打印数据。

function printMatrix() {
var $matrix = $('#matrix'); // the element to be sent via post
$('#printData').val( $matrix[0].innerHTML ); // updating the hidden input
$('#frmPrint').submit(); // submitting the form
}

<a>的点击触发器上有绑定(bind)事件标签:

$(document).on('click', '#printMatrix', function(event){ printMatrix(); }); 

关于javascript - 将 Javascript 变量传递给 CakePdf,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26935818/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com