javascript - 使用带有 JS 输入的 Header 下载文件

标签 javascript php

我有一个页面,其中有一个 JavaScript 函数,该函数使用 Post 将变量发送到 php 文件。问题是,我使用“header”下载文件,而我的 JS 没有在新页面中打开 PHP 脚本。

当我在新页面中打开php文件时,它没有从JS接收到所需的变量。

我知道这听起来令人困惑,但我希望我的代码能够阐明我的问题。

简短的版本是,我正在尝试下载由单选按钮选择的文件。我使用 JS 检查哪个单选按钮被选中,然后将其发送到我的 php 文件。然后需要下载该文件。

提前谢谢大家。

PHP:

<?php

if (isset($_POST['routenumber'])) {
if(!isset($_SESSION)){session_start();}
$routenumber = (isset($_POST['routenumber']) ? $_POST['routenumber'] : null);


$directory = ("Users/".$_SESSION['id']."/SavedRoutes/");

$routes = scandir($directory);
sort($routes);
$route = $routes[$routenumber];

$file =("Users/".$_SESSION['id']."/SavedRoutes/".$route);


header("Content-type: application/gpx+xml");
// header("Content-Disposition: attachment;Filename=".json_encode($route).".gpx");
header("Content-Disposition: attachment;Filename=route.gpx");


readfile($file);

}
?>

JS:

function fuAccountDownloadRoute(){
var i=2;
var SelectedRadio
while (i < routecounter){
    var str1='radio';
    var str2=JSON.stringify(i);
    var result = str1.concat(str2);
    if (document.getElementById(result).checked){
        SelectedRadio = result.slice(5);
    }
    i=i+1;  
}


$.post('accountPage.php',{routenumber:SelectedRadio});
}

最佳答案

当您打开网址时:http://localhost/accountPage.php在您的浏览器中,它会发出 GET 请求。如果你想让它成为可能,你应该将代码中的所有 $_POST 更改为 $_GET,然后你可以像这样打开它:http://localhost/accountPage.php?routenumber=3 ,尽管这可能不是您真正想要的。

关于javascript - 使用带有 JS 输入的 Header 下载文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34923064/

相关文章:

c# - 无法单击 jquery 对话框中的 asp.net 按钮

javascript - 如何将多个函数结果绑定(bind)为选项以在表单选择弹出框中进行选择?

php - 如何在php中根据 session 显示菜单?

php - 使用 limit(20) 时,它仅运行 DB 的前 20 个值

php - 如何通过多个id从多个表中执行选择

php - Elasticsearch ~2.0 php - 无法建立连接 - 数组到字符串转换错误

javascript - 当我更改 innerHtml 时, Bootstrap 选项卡事件不再起作用

javascript - 如何在javascript中使用input.value

php - yii2 - 多对多关系的 CRUD

PHP - 如果下拉选择=某事