Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/267.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 无行动表格_Javascript_Php_Html_Ajax - Fatal编程技术网

Javascript 无行动表格

Javascript 无行动表格,javascript,php,html,ajax,Javascript,Php,Html,Ajax,是否可以使用不重新加载当前页面的HTML form POST命令 我正在使用Angular.JS和PHP编写一个SPA,PHP代码创建了一个PDF文件,我希望服务器将该文件发送到本地打印机或发送到客户端,具体取决于客户端是PC或移动设备,因此我相信我需要一篇文章来下载PDF文件,但在某些情况下我不需要下载该文件,因此,我希望服务器向浏览器发送“不做任何事情”响应 我可以先使用AJAX请求,然后根据响应执行POST,但我想知道是否可以最小化服务器通信 谢谢您可以使用iframe,只会重新加载ifr

是否可以使用不重新加载当前页面的HTML form POST命令

我正在使用Angular.JS和PHP编写一个SPA,PHP代码创建了一个PDF文件,我希望服务器将该文件发送到本地打印机或发送到客户端,具体取决于客户端是PC或移动设备,因此我相信我需要一篇文章来下载PDF文件,但在某些情况下我不需要下载该文件,因此,我希望服务器向浏览器发送“不做任何事情”响应

我可以先使用AJAX请求,然后根据响应执行POST,但我想知道是否可以最小化服务器通信


谢谢

您可以使用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 !';
}
?>

你想最大限度地减少AJAX中使用的内容是什么?我尝试不使用AJAX-即,如果我发送一个AJAX请求来构建PDF,然后发送一个POST请求来下载它,这需要两次到服务器,因此我尝试构建PDF,如果服务器没有将其发送到打印机,则可以选择将其发送回去,它只需要一个服务器请求。您可以将它作为ajax中成功方法的代表返回,因此它只需要一个请求。这种情况非常适合ajax,只有1个请求。谢谢Sven,但是即使ajax请求能够返回PDF,我认为只有JSON或XML,我也会遇到同样的问题-如果没有PDF文件可下载,服务器应该如何响应?如果有文件,您可以返回url,如果没有文件返回false。如果false显示消息,或者打开链接google jquery open link感谢回复Nabil-如果文件不存在(即在打印假脱机过程中删除),使用iframe将停止页面重新加载,如果我使用一些CSS隐藏iframe,则我的用户将看不到返回的错误,因此我将尝试一下。