我有一个主题构建网站,为另一个不相关的项目创建主题。我有一些不同的输入,其中包含数据。我能够获取数据并将它们存储在变量中。当我单击下载按钮时,我希望变量发送到.php文件,然后下载该文件。我相信我发送它没问题,但下载数据似乎是困难的部分。
$("#download-theme").click(function() {
$(function() {
$.ajax({
type: "POST",
url: 'download.php',
data: ({
value: value
}),
success: function(data) {
alert(data);
}
});
});
});
我相信这会将它发送到download.php文件,因为我收到了正确值的警报。我接下来要做的是将php文件的数据下载为.txt文件。也许我通过将它发送到php文件使其复杂化我不确定。
总而言之,我想从变量中获取数据并将其放入文件中,并让用户下载它。
编辑:我看到了quentino响应并且它有效,但我有5个输入,我需要通过一个提交按钮进行传输。<input type="text" name="variable1" />
<input type="text" name="variable2" />
<input type="text" name="variable3" />
<input type="text" name="variable4" />
<input type="text" name="variable5" />
<input type="submit" value="send"/>
答案 0 :(得分:2)
你确定你必须使用ajax吗?您可以使用隐藏表单,在onclick事件中设置数据并发送它。简单的一个文件示例:
<?php
if (isset($_POST['data'])) {
header("Content-disposition: attachment; filename=\"test.txt.\"");
echo $_POST['data'];
} else {
?>
<html>
<body>
<form method="post"/>
<input type="text" name="data" />
<input type="submit" value="send"/>
</form>
</body>
</html>
<?php } ?>
答案 1 :(得分:0)
根据我的阅读,没有真正的方法可以通过ajax将内容提取为下载格式。我已经使用内容处理进行了测试,但仍然无效。
如果您结帐:https://stackoverflow.com/a/20830337/3706559
他们解释说,通过更改窗口URL,您可以触发下载。由于下载页面实际上没有任何文本内容,它只是下载它实际上不会重定向您的用户它只会下载
答案 2 :(得分:0)
我不知道这是不是你需要的,但我试试。
function ajaxrequest(){
$(isset($_POST['yourfirstdata']){
$yourfirstdata=$_POST['yourfirstdata'];
}
$myfile = fopen($_SERVER['DOCUMENT_ROOT'] . "/newfile.txt", "w");
$txt = "$yourfirstdata";
fwrite($myfile, $txt);
exit;
}
这是创建文件txt的可能代码。我认为它必然会节省在服务器上。
success: function(data) {
alert(data);
var a = $("<a>")
.prop("href", "root-of-your-newfile/newfile.txt")
.prop("download", "newfile.txt")
.appendTo("body");
a[0].click();
a.remove();
}
只需在ajax调用的“成功”中,即可下载文件create。
答案 3 :(得分:0)
虽然问题有点含糊不清。我正在回答你的问题。
是的,您可以使用Ajax获取文件,并且您做得很好。 要使浏览器下载文件,您需要传递一些标题,以便浏览器可以这样理解
使用以下代码使用PHP传递标头(如果您使用服务器端)
ob_clean();
flush();
$file = "somefile.xlsx";
header('Content-Description: File Transfer');
header('Content-Type: application/vnd.openxmlformats-officedocument.spreadsheetml.sheet');
header('Content-Disposition: attachment; filename='.basename($file));
header('Content-Transfer-Encoding: binary');
header('Expires: 0');
header('Cache-Control: must-revalidate');
header('Pragma: public');
header('Content-Length: ' . filesize($file));
readfile($file);
或者你也可以在Ajax的成功函数中使用javaScript传递相同的头文件