2011-07-14 137 views
2

下記のtest.phpファイルのコードでjQueryを "GET"しています。jQuery経由で[名前を付けて保存]ダイアログを強制するGET

結果として得られるtest.iniファイルに「名前を付けて保存」ダイアログをポップしてローカルに保存できるようにするためのスクリプトを取得しようとしています。しかし、結果をjQueryの罰金に戻すことはできますが、「名前を付けて保存」ダイアログをポップすることはできません。

アップデート:以下のソリューションのおかげで、$ .getをwindow.location.replaceに変更しました。

$('#test').click(
    function() 
    { 
     //$.get('<?php echo get_bloginfo('template_directory') ?>/test.php'); 
     window.location.replace("<?php echo get_bloginfo('template_directory') ?>/test.php"); 

    } 
); 
+1

AJAXリクエストで[名前を付けて保存]ダイアログボックスが表示されないと思います。 AJAXリクエストの代わりにそのページに移動するだけではどうですか? – pimvdb

答えて

8

「名前を付けて保存」ダイアログを表示するリクエストを受け取ることはできませんが、できることはページに非表示のiframe要素を挿入し、そのiframeのソースをユーザーに設定するURLに設定することですダウンロードする。 Voila、あなたの名前を付けて保存があります。

ここでコピーアンドペースト例です:

$('a#linky').click(function(){ 
    var iframe = document.createElement("iframe"); 
    iframe.src = 'http://example.com/branding.zip'; 
    iframe.style.display = "none"; 
    document.body.appendChild(iframe); 
    return false; 
}); 
+0

これが本当に機能するなら、それは素晴らしい考えです。 – Nicole

+0

+1をコピー/ペーストします。私はちょうど私の$ .getをwindow.location.replaceに変更することになったが、後でこれを行うかもしれない。 –

+0

私のために働いていない、iframeの私のpdfショーは、 "名前を付けて保存"ダイアログは表示されません:(..ちょうどテストGoogleクロムを使用して... – ncubica

1

AJAXリクエストでファイルダウンロードダイアログを生成できません。代わりに新しいウィンドウでダウンロードターゲットを開くことを検討してください。

3

あなたはこのためにAJAXを必要としません。ただ、問題にしているPHPの使用

header('Content-disposition: attachment;filename=whatever.dat'); 

にPHPに移動します。これは、ポップアップしますダイアログボックス「として保存」とあなたは元のページに残ります。

+0

問題のPHPがエラーを起こさない限り動作します。この場合、新しいURLに移動してユーザにエラーを出力します。この理由から、私は新しいフレーム(または、ジミーが示唆しているように、iFrame)を使用することを好む。 –

+0

システムにエラーが発生した場合、当然のことながら、動作は期待通りにはなりません。あなたがジミーによって提案されたiframeメソッドを使用してPHPのエラーが出る場合、ユーザーの視点からは何も起こりません。つまり、ユーザーがボタン/リンク/ etcをクリックすると、何も起こりません。また、最高のユーザーエクスペリエンスもありません。 –

+0

あなたはコメントなしでdownvotesを愛していない - 答えの5年後! –

関連する問題