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?

War es hilfreich?

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

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top