Ich habe ein GUI-Front-End (HTML und JavaScript) ein Perl-Back-End. Beim Klicken auf eine bestimmte Schaltfläche auf der Startseite des Front-Ends erhält das Perl-Back-End ein bestimmtes Argument. Dieses Argument führt also zu einer Wertänderung einer Variablen ($checkInfo
), die dann an die GUI zurückgegeben wird. Die GUI zeigt nun eine Nachricht an, die $checkInfo
anzeigt und nach dem Schließen des Pop-Ups öffnet sich eine weitere Seite (sprich Seite 2). Auf Seite 2 ist eine bestimmte Schaltfläche, die E-Mails $checkInfo
an eine bestimmte E-Mail-Adresse.Behalten den Wert einer Variablen in Perl
Das Problem, das ich mit Blick auf bin, ist, dass $checkInfo
zu ""
auf Seite 2. Auf Seite 1, kehrt die Back-End-$checkInfo = something
auf die GUI gleich ist, aber dieser Wert ist verloren, wenn ich zur Seite 2. Ich habe versucht, deklarieren $ Wert als state $checkInfo
, aber das funktioniert auch nicht. Ich verwende $checkInfo
nur in der main()
Funktion. Im Code
, alles, was Sie wissen müssen, ist, dass preSubmitCheck::autoSubmitCheck
den Wert zurück, so dass $checkInfo->{rc} != 0
und in der ersten Iteration $mode ne 'ticket'
aber $mode eq 'ticket'
in der zweiten Iteration. In der zweiten Iteration muss der Wert von $ checkInfo identisch mit dem ersten Iterationswert sein.
Perl-Code:
my $username = defined param("username") ? param("username") : undef;
my $action = defined param("run_type") ? param("run_type") : undef;
my $cit_suite = defined param("cit_suite") ? param("cit_suite") : undef;
my $buildroot = defined param("buildroot") ? param("buildroot") : undef;
my $site = defined param("site") ? lc(param("site")) : undef;
my $branch = defined param("branch") ? param("branch") : undef;
my $hw = defined param("hw") ? param("hw") : undef;
my $variant = defined param("variant") ? param("variant") : undef;
my $num_runs = defined param("num_runs") ? param("num_runs") : undef;
my $justification = defined param("justification") ? param("justification") : undef;
my $mode = defined param("userAction") ? param("userAction") : undef;
my $jobID = defined param("jobID") ? param("jobID") : undef;
my $cancel_type = defined param("canceltype") ? param("canceltype") : undef;
state $checkInfo;
my $error;
my %rtn = (
rc => 0,
message => "All is well."
);
if($mode ne "ticket") {
$checkInfo = preSubmitCheck::autoSubmitCheck($site,$username,$num_runs);
}
if(defined $checkInfo && $checkInfo->{rc} == 0){
my $target = 1;
}
else {
if($mode eq "ticket"){
$error = $checkInfo->{message};
my $rtnFromTicket = sendTicket(
username => $username,
cit_suite => $cit_suite,
action => $action,
buildroot => $buildroot,
site => $site,
branch => $branch,
hw => $hw,
variant => $variant,
num_runs => $original_num_runs,
justification => $justification,
errorMessage => $error
);
$rtn{rc} = 2;
$allMessage .= " Your job couldn't be automatically submitted: ". $error;
$allMessage .= " Email info: ". $rtnFromTicket -> {message};
$rtn{message} = $allMessage;
print "00delimiter00"; # use as a delimiter to split from useless print information, and make the front end got the json data.
print to_json(\%rtn);
exit $rtn{rc};
}
else{
$error = $checkInfo->{message};
$rtn{rc} = $checkInfo->{rc};
if($rtn{rc} == 6) {
$allMessage .= " Your job couldn't be automatically submitted: ". $error. " You can schedule your run or open a ticket with the SMOKES team.";
}
else {
$allMessage .= " Your job couldn't be automatically submitted: ". $error;
}
$rtn{message} = $allMessage;
print "00delimiter00"; # use as a delimiter to split from useless print information, and make the front end got the json data.
print to_json(\%rtn);
exit $rtn{rc};
}
}
GUI-Code:
var query = "username=<% $ARGS{username} %>";
if(Mode=="all"){
query += "&run_type=Presub_smoke";
}
else {
query += "&run_type=CIT" + "&cit_suite=" + document.getElementById("citsuite").value;
}
query += "&buildroot=" + encodeURIComponent(document.getElementById("buildroot").value);
query += "&site=" + encodeURIComponent(document.getElementById("remoteSite").value);
query += "&branch=" + encodeURIComponent(document.getElementById("branch").value);
query += "&hw=" + encodeURIComponent(document.getElementById("hwtype").value);
query += "&variant=" + encodeURIComponent(document.getElementById("variant").value);
query += "&num_runs=" + document.getElementById("num_runs").value;
query += "&justification=" + encodeURIComponent(document.getElementById("justification").value);
query += "&userAction=" + encodeURIComponent(action);
var submitFcts = new Array();
submitFcts[3] = "updateSubmitInfo";
submitFcts[4] = "return_request";
makeUserRequest2("<% $CGI_form_path %>", query, submitFcts, "");
Ich hoffe, dass dies für die Beantwortung meiner Frage genügt. Vielen Dank!
Sie müssen Ihre große Menge Code auf ein minimales Beispiel, das das Problem zeigt, aufkochen und dann dieses Beispiel veröffentlichen. – RJM
Tipp: 'my $ username = definierter Parameter (" Benutzername ")? param ("username"): undef; 'kann auf' my $ username = param ("username") verkürzt werden; ' – ikegami
@ikegami danke Ich behalte das im Hinterkopf :) –