pl: DOMParser und Progressive Enhancement

Beitrag lesen

problematische Seite

Ich danke Dir ganz herzlich, aber nach Entkopplung sieht das nicht gerade aus 😉

Je nach gepostetem Wert von op werden die Eingaben zu 1000 addiert oder von 1000 subtrahiert.

Dann ist op ein sogenannter Schlüsselparameter. Natürlich geht es bei Webanwendungen immer darum, die Programmierlogik über Requestparameter zu schleifen.

Um auf mein Beispiel zurückzukommen: Da sind es 2 Schlüsselparameter, date2jd und jd2date. Du tust immer gut daran, diese Schlüsselparameter von den restlichen Parametern sauber zu trennen. Die restlichen Parameter sind date=1.1.1&jd=1234 und der Schlüsselparameter legt fest was damit gemacht werden soll (anhand der Namen erklärt sich das von selbst in meinem Beispiel).

Natürlich muss der Schlüsselparameter dem Request mitgegeben werden. Beim native Submit macht das der Browser, wenn für PE das Submitevent abgefangen wird, muss man sich selbst darum kümmern.

Serverseitig siehst bei mir übrigens so aus, Kontrolle über die Schlüsselparameter:

sub control{
    my $self = shift;
    my $date = $self->trim($self->param('date'));
    my $injd   = $self->trim($self->param('jd')) || "0";
    
    $self->{STASH}{date} = $self->ents($date);    
    $self->{STASH}{jd} = $self->ents($injd) || 0;  
    $self->{STASH}{wochentag} = '';

    if($self->param('date2jd')){
        $self->{STASH}{jd} = '';
        my $date = $self->trim($self->param('date')) or return $self->errorP(title => "Eingabefehler", descr => "Kein Datum eingegeben");
        $self->{STASH}{jd} = $self->{SCA}->jd( date => $date);
        $self->{STASH}{wochentag} = $self->{SCA}->wochentag( date => $date);
        return $self->errorP(descr => "$@", title => "Eingabefehler") unless defined $self->{STASH}{jd};
    }
    elsif($self->param('jd2date')){
        $self->{STASH}{date} = '';
        return $self->errorP(title => "Eingabefehler", descr => "Kein JD eingegeben") if length($injd) == 0;
        
        my $day = $self->{SCA}->day( jd => $injd ) or return $self->errorP(title => "Eingabefehler", descr => "$@");
        my $month = $self->{SCA}->month( jd => $injd );
        my $year = $self->{SCA}->year( jd => $injd );
        $self->{STASH}{wochentag} = $self->{SCA}->wochentag( jd => $injd);
        $self->{STASH}{date} = "$day.$month.$year";
    }
    else{ $self->errorP( title => 'Fehler im Request', descr => 'Unbekannter Parameter'   ) }
}

Also einschließlich der Fehlerbehandlung. Hierzu setzt die Funktion errorP() den Responsestatus auf 400 damit die XHR Callbackfunktion das mitbekommt. Die Fehlertexte liefert das darunterliegende Kalendermodul.

MFG