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

时间:2016-01-21 11:51:51

标签: javascript php

我有一个页面,它有一个JavaScript函数,它使用Post将变量发送到php文件。问题是,我正在使用" header"下载文件,我的JS不会在新页面中打开PHP脚本。

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

我知道这听起来很混乱,但我希望我的代码可以解释我的问题。

简短版本是,我正在尝试下载由radiobutton选择的文件。我使用JS来检查哪个radiobutton被检查,然后将其发送到我的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});
}

1 个答案:

答案 0 :(得分:0)

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