将 Javascript 变量传递给 CakePdf
Passing Javascript variables to CakePdf
我需要将一个变量(实际上是大量的HTML,通过JavaScript动态生成)传递给将输出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),我在提交表单之前随时随地更改printData。
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>
标记的点击触发器上有一个绑定事件:
$(document).on('click', '#printMatrix', function(event){ printMatrix(); });
相关文章:
- 为什么不't Javascript对我的输入值进行了一些重新检查
- 创建一个类似链接的按钮,并通过Javascript函数打开一个新的弹出窗口
- 将函数的上下文应用于javascript变量
- 使用php或javascript从facebook相册URL中删除多余的部分
- 正在添加'X'按钮,在文本字段旁边使用javascript
- 如何在JavaScript中将字符串转换为函数引用
- 模糊事件的Javascript测试
- Javascript更改图标
- 如何将HTML id分配给元素,以及如何将JavaScript应用于元素
- 如何使用WCF服务和javascript表单post上传.doc文件
- javascript结合了数组和字典
- 这是什么 ==- javascript 运算符
- 从javascript创建一个列表
- 无法在通过jQuery的ajax加载的页面中执行javascript
- Javascript:selenium Web驱动程序isDisplayed()不工作
- 如何通过ajax刷新JSF填充的javascript变量
- 如何在Javascript中将JSon对象转换为数组
- Javascript生成的表单未提交
- 使用javascript将动态表从一个html页面打印到另一个html页
- 将 Javascript 变量传递给 CakePdf