...so...
Hallo,
die Frage war nicht schlecht :-)
Jetzt habe ich das Ganze mal ein wenig abstrahiert.
In dem folgenden Code wird einfach nur eine Datei test.txt downgeloaded, wenn man Senden drückt. Feldwert ist egal.
Mein Problem ist nun, daß meine Seite nicht neu geladen wird, also der alert('aha') nicht ausgeführt wird.
Wenn ich das Ganze in einem eigenen Fenster aufrufe mit window.open, bleibt beim Canceln das neue Fenster stehen. Außerdem sieht das zusätzlich Fenster blöd aus und ist unnötig.
Idee?
Danke & Gruß,
Roger
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
#!/usr/bin/perl -w
use strict;
use CGI qw(:standard escapeHTML);
use CGI::Carp qw(fatalsToBrowser);
my $ausgabe = "";
my $downloadaufruf = "";
my $wert = param('wert') || "";
my $button = param('action') || "";
if ($button eq "Senden") {
$ausgabe .= "...senden gedrückt...<br>";
$ausgabe .= "Wert = $wert <br>";
download("test.txt");
$downloadaufruf = "alert('aha');";
}
my $html = <<"(END OUT HTML)";
<html><head>
<title>Test</title>
<script language=\"JavaScript\">
<!--
$downloadaufruf
// -->
</script>
</head>
<body>
<FORM METHOD="POST">
$ausgabe
<input type="text" name="wert">
<input type="submit" name="action" value="Senden">
</FORM>
</body>
</html>
(END OUT HTML)
print "Content-Type: text/html\n\n",
$html;
1;
sub download {
my $file = shift;
print "Content-Type: application/octet-stream\n";
print "Content-Disposition: attachment; filename=$file\n\n";
open(FH,"<$file");# || die "mist";
binmode FH;
binmode STDOUT;
print while(<FH>);
close FH;
}