Ist es möglich, mehrere Zielseiten mit Quer Seite Posting zu haben?
-
06-07-2019 - |
Frage
Ich habe eine Web-Seite, die Quer Seite Eintrag verwendet, um eine andere Zielseite zu veröffentlichen.
Eine neue Anforderung entstanden ist, das bedeutet, dass es 4 verschiedene Zielseiten könnte auch zu schreiben, je nachdem, welche Daten wurde auf dem Client eingegeben.
Ist es möglich, die Quer Seite Posting Ziel dynamisch auf dem Client irgendwie zu ändern?
an der Quelle html Von der Suche Ich denke, es wäre möglich, jquery zu verwenden, um das Postback-Ziel auf der Submit-Button zu manipulieren, aber dies scheint ein bisschen ein Hack.
Was meine Alternativen sind, schreiben die Seiten Quer Seite Posting zu entfernen und leitet eine Antwort, die Daten in der Sitzung vorbei?
Lösung
Ja, Sie können sicherlich die action
der Form ändern. Ich werde Sie durch, wie es zu tun.
Zuerst müssen Sie Ihr Formular einen Namen und eine Aktion URL im HTML angegeben:
<form name="aformiam" method="post" action="/somewhere/to/go.php">
Als nächstes wirst du wollen, einige JavaScript auf Formular-Vorlage laufen, so dass Sie die OnClick Eigenschaft Ihres Submit-Button auf eine Funktion, wie die folgenden setzen sollen:
<input type="submit" value="Send Form" onClick="return submitForm();" />
Schließlich ist Ihre JavaScript-Funktion, um tatsächlich die Form Aktion zu ändern und das Formular abzuschicken.
function submitForm() {
// do anything here you need to determine which URL to post to
// I am just making an example here
var targetURL = '/some/url/to/post.php';
// now we will change the form's action
document.aformiam.action = targetURL;
// finally, submit the form by returning true
return true;
}
Beachten Sie, dass im letzten Schritt, wo wir true zurück, das das Formular abschickt, weil der Typ des Eingabeelement ist submit
und die Funktion wird durch die onClick
Ereignis ausgelöst hat. Wenn dies zum Beispiel ein button
Typ Eingangselement oder ein a
Tag oder img
dann müssten wir die Form auslösen, mit so etwas wie folgt einreichen:
document.aformiam.submit();
Diese Lösung arbeitet, um die Aktion zu ändern und zu einer Single URL einreichen. Wenn Sie auf einmal mehrere URLs schreiben müssen, werden Sie die Verwendung anderer Methoden wie XMLHttpRequest machen. Wenn dies der Fall ist, schreiben Sie einen Kommentar angibt, so und ich werde ein Beispiel dafür geben.
Andere Tipps
Sie können versuchen, das action
Attribut des Formulars zu ändern JavaScript verwenden, kurz vor dem Formulareinreichung.
Leider sind die meisten Browser unterstützen POST Umleitung nicht. Auch RFC stellt fest :
RFC 1945 und RFC 2068 angeben, dass der Client nicht erlaubt ist das Verfahren auf den umgeleiteten Anfrage zu ändern. Allerdings sind die meisten bestehende User-Agent-Implementierungen behandeln 302, als ob es ein 303 waren Antwort, ein GET auf dem Location-Feld-Wert durchführt, unabhängig des ursprünglichen Anforderungsverfahren. Die Statuscodes 303 und 307 haben für Server hinzugefügt, die eindeutig klar machen wollen, die Art der Reaktion wird von dem Client erwartet.
Also, meiner Meinung nach sind die Entscheidungen entweder JavaScript action
Modifikation beschränkt oder neu POSTen Daten von Ihrem Server (der Server akzeptiert die gesendeten Daten, analysiert sie und führt POST durch selbst).
Daten in Sitzung speichern (oder Rückkehr es nur auf POST) und dann wieder POSTen es von dem Client erfordert entweder JavaScript-Unterstützung (automatisch das Formular) oder machen Benutzer klicken Sie auf „Absenden“ ein weiteres Mal. Sie können mit dieser Methode als Ausweich betrachten, though.
Als Standard action
Punkt, um Ausweich Skript. Wenn Sie action
vor der Vorlage ändern können - alles ist an diesem Punkt in Ordnung. Wenn etwas ausgefallen ist, wie im Fall JavaScript deaktiviert zu sein -. Ihre Ausweich Skript Ausgabeseite mit einem versteckten Datenfeld machen (so sollte es nicht mehr geändert werden) und sichtbar Submit-Button, Daten an eine geeigneten Stelle POSTen