2012-02-28 16 views
2

我有一个链接,它在简单的jquery的新选项卡中启动新的html页面,如,没有问题。如何在提供下载对话框时将页面作为html提供服务

预计:

  • 页面在新标签打开,并应保持打开,另存为对话框提示

当前异常行为:

  • 页面打开在新选项卡中,然后用提示保存对话框关闭

不久,我想保持页面打开,同时提示另存为对话框。使用Content-Disposition附件似乎没有机会保持打开页面。 我也没有做任何exit();,但从未显示该页面,除了对话框。

感谢

+0

在jQuery代码,在任何的是在此过程中被使用的功能“返回false”? – 2012-02-28 16:02:27

+0

jquery除了:window.open(url,'external');我期待更多的服务器端的事情。谢谢 – swan 2012-02-28 16:03:42

回答

4

尝试最初拉着你的页面作为一个正常的页面,并使用元刷新重定向到相同的URL与参数告诉你的PHP再次服务的页面下载。

例子:

<?php 
$isDownload = isset($_GET['download']); 
if($isDownload) { 
    header('Content-disposition: attachment'); 
} 
?> 
<html> 
    <head> 
     <?php if(!$isDownload) { ?> 
     <meta http-equiv="refresh" content="0;<?=$_SERVER['REQUEST_URI']?>?download" /> 
     <?php } ?> 
... 
+0

是的,听起来不错,但不知道如何将它带入我的代码:) – swan 2012-02-28 16:07:35

+0

感谢param的东西是我的CMS中蜿蜒的道路:) – swan 2012-02-28 16:26:05

+0

看起来你可能已经知道了,但我添加了一个例。 – 2012-02-28 16:33:30

1

不知道这是一个很好的答案或不..但也许..打开显示的页面另存为对话框&尝试一些document.location.href =“abspathtofile “;在js ..虽然我不知道这是你正在寻找..

1

插入一个元刷新标签到您当前在弹出窗口中服务的页面。此元刷新应该指向该文件要下载:

popup.php: 

<head> 
    ... 
    <meta http-equiv="refresh" content="10;URL='http://www.example.com/downloads/file.ext'" />  
    ... 
</head> 

这将在新窗口中显示popup.php,和10秒后的保存对话框将显示,提示用户下载该文件file.ext

0

发送刷新头

标题( “刷新:5; URL = HTTP://www.example.com中下载= 1?”);

,而不是需要修改你的模板中添加meta标签