问题 下载 CSV 一次后,表单不发送提交请求。
目的:选择一些下载条件后下载 CSV 信息文件。
PHP 脚本:
export.php
显示一个 HTML 表单,允许用户选择某些条件(基本上设置几个变量,然后提交这些条件以下载 CSV 文件。
exportEntrants.php
使用表单设置的那些变量从数据库中检索适当的数据,创建 CSV 数据,然后将其作为下载提供给用户。
所以在export.php
我们有以下片段:
require_once 'exportEntrants.php';
if(/*the form is submitted*/){
export($criteria);
}
else{
// Display the HTML Form
}
第一次提交表单时成功调用exportEntrants.php脚本。
然后在exportEntrants.php
数据已正确创建并使用以下方式下载:
function download($content,$title) {
header('Content-Description: File Transfer');
header("Content-type: application/csv");
header('Content-Disposition: attachment; filename="'.$title.'.csv";');
echo $content;
exit();
}
之后,下载工作正常,CSV 是正确的。但是在屏幕上,用户仍然可以看到表单,因此再次单击“提交”按钮应该会触发 if
。上述声明,并允许我使用我认为合适的相同或不同标准再次下载文件。
但这并没有发生,什么也没有发生。表单仍然显示在屏幕上,屏幕上没有任何变化,但是提交表单不会重新加载页面或引起任何操作。
谁能看出是什么导致了这个问题?我将根据需要提供任何其他信息。
谢谢。
编辑 以回应下方 Hakre 的评论。
禁用 Javascript 没有任何区别。
此问题已在 Firefox 7.0.1 和 Chrome 14 中测试过。我还没有尝试过 IE 或 Safari。
表单的 HTML 如下(我没有包括表单的标准部分,因为它们工作正常,并且表单是由一个相当复杂的函数生成的,所以它不是一小段 HTML(很多div 和跨度):
<form action="/admin/export/export.php" method="post" name="exportForm" onsubmit="return formSubmit()"><input type="submit" name="submit_butt" value="EXPORT" class="button"></form>
最佳答案
当您反复按下按钮时,请求未被发送的事实似乎表明客户端存在问题。检查客户端的 formSubmit() 函数或页面源,看看附件下载是否以某种方式搞砸了 Javascript。
关于php - 标题和退出()导致无响应的表单提交,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7752733/