真的很奇怪的Javascript / PHP行为

时间:2020-06-09 08:57:36

标签: javascript php download

我想从网页上允许用户在服务器上创建cvs文件并下载它,该文件由PHP( header('Content-Description:File Transfer'))生成。

>
function download_csv_file(){document.location='?action=download_file';}

它就像一种魅力。文件已创建,下载会自动开始。

但是,如果我在JS函数中添加任何其他js事件/脚本(在新行的同一行中),则该文件是在服务器上创建的,但没有下载。

真的很奇怪,下一行的简单注释也会破坏该过程……但是,如果注释在同一行上,则可以!疯狂!!!

function download_csv_file(){
   document.location='?action=download_file';
   // Simple comment
}

不工作!

function download_csv_file(){
   document.location='?action=download_file'; // Simple comment
}

工程!!!

但是,如果我在同一行上添加真实代码(而不是注释),它将无法正常工作。

任何解释或想法,我可以尝试或搜索什么? 在Chrome和Firefox中的行为相同

1 个答案:

答案 0 :(得分:0)

 document.location

告诉浏览器使用其他URL。因此,它将停止在当前URL处执行任何操作,而是导航到新URL。当然,这意味着该命令之后的所有JavaScript代码都将被忽略。

由于您的新网址恰巧是在下载文件,因此您可能仍然可以在后台看到上一页,这可能会使您相信它仍然是当前页。

您可能可以通过使用window.open在另一个标签中访问下载URL来解决此问题。

P.S。关于注释问题...您是否在浏览器的控制台中检查是否发生任何错误?我无法重现该问题:https://codepen.io/ADyson82/pen/dyGYQrd