window.open将参数传递到php并触发pdf创建和查看



我一直在使用window.open指向一个php文件,在该文件中,我使用fpdf动态创建了一个pdf,并立即将其显示给用户。似乎可以在所有浏览器甚至移动设备上正常工作。例如:

window.open('/client/feature_Schedule/scheduleReport.php','Schedule_Report','width=900,height=600,status=yes');

在这个例子中我没有传递任何值,因为php文件中已经存在所有需要的参数。

但现在我想传递javascript中的值,以便在创建pdf并将其显示给用户之前查询php文件中的数据库。有什么惯例我应该知道吗?Window.open似乎无法处理此问题,除非在url末尾的"?"后面添加值。但我更喜欢POST值,因为可能有很多数据被发送到php文件。我甚至一直在玩$.ajax,但不知道如何用pdf触发为用户打开。

谢谢。

window.open()只能执行GET请求。如果您想使用POST获得相同的效果,则需要创建一个具有适当控件和目标的表单。

您可以创建一个带有隐藏输入的<form>,并使用JavaScript提交表单。请注意,target="_blank"属性会导致表单发布到新窗口。

<a href="#" onclick="document.forms['pdfForm'].submit();return false;">Generate PDF</a>
<form target="_blank" id="pdfForm" name="pdfForm" method="POST">
    <input type="hidden" name="param1" value="val1" />
    <input type="hidden" name="param2" value="val2" />
</form>

有一个用window.open()发送POST数据的解决方案,它非常简单:窗口.通过后方法打开并传递参数

它甚至可以在没有任何实际HTML代码的情况下制作,只需使用纯javascript编程。

//编辑:添加了仅限javascript的解决方案:

<input type="button" value="Open" onclick="openWindow();" />
<script>
function openWindow(){
    // create <form>
    var form = document.createElement('form');
    form.method = 'POST';
    form.action = 'process.php';
    form.target = 'window_1'; // target the window
    // append it to body
    var body = document.getElementsByTagName('body')[0];
    body.appendChild(form);
    // create an element
    var child1 = document.createElement('input');
    child1.type = 'text'; // or 'hidden' it is the same
    child1.name = 'elem1';
    child1.value = 'some value';
    // append it to form
    form.appendChild(child1);
    // create another element
    var child2 = document.createElement('input');
    child2.type = 'text'; // or 'hidden' it is the same
    child2.name = 'elem2';
    child2.value = 'some other value';
    // append it to form
    form.appendChild(child2);
    // create window
    window.open('', 'window_1');
    // submit form
    form.submit();
    body.removeChild(form); // clean up
}
</script>

使用PHP,您可以简单地将参数包含在GET语句中

window.open('/client/feature_Schedule/scheduleReport.php?parameter='.$value,'Schedule_Report','width=900,height=600,status=yes');

相关内容

  • 没有找到相关文章

最新更新