是否可以使用不重新加载当前页面的HTML表单POST命令?
我正在使用Angular.JS和PHP编写SPA,PHP代码创建一个PDF文件,我希望服务器假脱机到本地打印机或发送到客户端(取决于客户端是PC还是移动设备),所以我相信我需要一个POST来下载PDF文件,但在某些情况下我不需要文件下载,因此我希望服务器向浏览器发送“不做任何”响应。
我可以首先使用AJAX请求,并根据响应执行POST,但是想知道是否可以最小化服务器通信。
由于
答案 0 :(得分:0)
您可以使用iframe,只会重新加载iframe。这是一个例子:
var onDownloadButtonClick = function() {
var iframe = document.getElementById('download_iframe_id');
if(!iframe) {
iframe = document.createElement('iframe');
iframe.setAttribute('src', '/path/to/your/file/');
iframe.setAttribute('id', 'download_iframe_id');
document.getElementById('iframe_parent_id').appendChild(iframe);
} else {
iframe.src += ''; // to reload iframe
}
};
document.getElementById('btn').onclick = onDownloadButtonClick;
在你的PHP文件中,你可以这样做:
<?php
$file = 'monkey.gif';
if (file_exists($file)) {
header('Content-Description: File Transfer');
header('Content-Type: application/octet-stream');
header('Content-Disposition: attachment; filename="'.basename($file).'"');
header('Expires: 0');
header('Cache-Control: must-revalidate');
header('Pragma: public');
header('Content-Length: ' . filesize($file));
readfile($file);
exit;
} else {
echo 'File don\'t exist !';
}
?>