秘密基地、どこに作った?

Win2k+IISでASPプログラムを組んでいます。

A.aspのページでボタンを押すとA.aspないのDownLoad関数実行してファイルをダウンロードするプログラムです。
一回目はうまくダウンロードできますが,それが終わった後A.asp内のボタンを押してもダウンロードが出来ません。
これはなぜでしょうか。
(1)怪しいと思うところはA.aspページで全て処理しているからかな~と思います。

A.asp
function download()
Response.AddHeader "Content- Disposition","attachment;filename=aa.csv"
Response.ContentType = "application/octet-stream"
Response.Write( "AAAAaaa" & "," )
Response.Write( "BBBaaa" & "," )
Response.End()
End function

A 回答 (3件)

> 怪しいと思うところはA.aspページで全て処理しているからかな~と思います。



たぶん正解です^^;
JavaScriptを組み込んでいることはないですよね?


テストしたわけではないんですが、おそらく下から2行目の
Response.End()
が影響しているのかと。

Response.Endはファイル出力終了の意味で、ここでは使用していますが
ASP自体の出力の終了も意味しますよね。

ファイル出力のFunctionに入る前に、ボタン等を表示しないと
表示されているボタンが前の画面のもので、無効になっているのかなぁと。
(画面表示の後、同一asp内でファイル出力できたかどうか、は自信なしです。)


私が作成したダウンロードのプログラムは、2つのaspで作成しました。
a.aspでボタンをクリックすると、b.aspでファイル出力~
私の場合はファイル出力後、a.aspの画面はそのまま使えましたけど。

この回答への補足

なるほど、一回目をダウンロードしたあと、2回目ダウンロードしようとボタンを押しても効かないのは画面上に存在しても、IEのメモリ上では(詳しく分かりませんが)開放(?)されてる感じでしょうか。

一応、画面表示をしたあと最後にダウンロードすることを試みてみます。

補足日時:2004/08/12 11:52
    • good
    • 0
この回答へのお礼

試してみましたが、だめでした。

>私が作成したダウンロードのプログラムは、2つのaspで>作成しました。
>a.aspでボタンをクリックすると、b.aspでファイル出力~
>私の場合はファイル出力後、a.aspの画面はそのまま使えましたけど。

このときb.aspは新しいWindowを開いてダウンロードしましたか。そうでしたら、この新しいWindowを自動的に閉じたくなりますか。。。。。

お礼日時:2004/08/12 12:20

全然関係なかったらごめんなさい。


マイクロソフトの技術情報418126はどうでしょうか?
・IE5.5以上を使用している。
・フレームを構成している。
・Content- Disposition attachmentを使用している。
・ダウンロード後target=を指定したリンクをクリックする。
以上の条件に全て当てはまると動かなくなるというものです。
    • good
    • 0
この回答へのお礼

ご回答有難うございます。
色々参考になりました。

お礼日時:2004/08/13 12:37

> このときb.aspは新しいWindowを開いてダウンロードしましたか。


> そうでしたら、この新しいWindowを自動的に閉じたくなりますか。。。。。

質問ですか?jaekukさんがテストした結果ですか?

私のソースでは、b.aspに処理が遷移しても新しいウィンドウは開きません。
ダウンロードするためのダイアログボックスは表示されます。
保存ボタンを押せば、元の画面に戻ります。
そして元の画面(a.asp)も使える、と。

もし、jaekukさんがテストした結果、新しいウィンドウが表示されたのでしたら
それは、a.aspのHTMLかJavaScriptで新しいウィンドウを開くように設定しているのが問題です。


わからないことがあれば、また質問して下さい。

この回答への補足

新しいウィンドウを開かないと、だめだったのでひらいたんですが、何とか解決しました.

問題だったのは、JavaScriptでFormデータを参照するところでした。2つフレーム構造になっていましたが、どうやら二回目のダウンロードボタンをおすと、Formデータにアクセスできなくなったのが問題でした.

document.formNameA.txtName.value = "Down"

parent.frameNameA.formNameA.txtName.Value = "Down"
にしたらちゃんと動くようになりました。
(多分ダウンロードした後は、現在のDocumentオブジェクトが変わるんじゃないか思います。)

色々ご親切な回答有難うございました。

補足日時:2004/08/12 15:25
    • good
    • 0

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!


おすすめ情報