Ich verwende ein Google-Formular auf einer Webseite. Ich habe den Quellcode aus dem Formular direkt auf meine Seite kopiert, so dass ich etwas HTML ändern kann, anstatt einen iframe zu verwenden. Dann möchte ich den Benutzer nicht zur Antwortseite von Google Docs bringen, sondern möchte sie auf eine andere Seite umleiten.
Das Problem, auf das ich gestoßen bin, ist die Seitenumleitung. Ich konnte das in Chrome und Firefox damit richtig machen:
%Vor%Sowohl IE als auch Safari haben die Weiterleitung automatisch durchgeführt und die Antwort wurde nie in das Google Formular geschrieben. Wenn ich die Weiterleitung abbringe, funktioniert die Aktion in beiden Fällen perfekt und die Antwort wird in der Google-Tabelle gespeichert.
Also habe ich versucht, die Aktion herauszuziehen und statt dessen stattdessen alles in onsubmit gemacht:
%Vor%Das gleiche Problem wie zuvor, IE und Safari werden beide umgeleitet, und nichts wird in die Google-Tabelle geschrieben. Und noch einmal, wenn ich die Weiterleitung entferne, wird die Antwort in allen Browsern aufgezeichnet. Ich kann auch andere Dinge tun, wie zum Beispiel eine Alarmmeldung nach der Aktion, und alles funktioniert weiterhin gut. Das Problem sehe ich nur mit der Weiterleitung.
An diesem Punkt kann ich nur feststellen, dass es sich um eine Art Konflikt zwischen der Weiterleitung und der Aktion handelt. Ich habe ziemlich begrenzte Arbeitskenntnisse von Javascript und Formen, so dass jede Hilfe oder Empfehlungen sehr geschätzt werden würde!
Klingt so, als hätten die Browser die Formularübergabe nicht abgeschlossen, bevor sie die Umleitung bearbeiten. onsubmit geschieht vor der Einreichung selbst, so dass Sie das Problem dort nicht behandeln können.
Verwenden Sie die Onload-Funktion des Ziel-iframes für die Weiterleitung.
Dies wurde auf ähnliche Weise gefragt:
Alte Google Form-Weiterleitung nach der Übermittlung
Sehen Sie sich die Antwort genau an. Die Onload-Funktion des Iframes übernimmt die Weiterleitung, so dass die Umleitung erst erfolgt, wenn die Übermittlung abgeschlossen ist und eine Antwort von Google gegeben wurde. Wenn die versteckte Antwort von Google geladen ist, wird eine Weiterleitung ausgelöst. Dies ist eine asynchrone Funktionalität zwischen dem Client und dem Server. Wir warten darauf, dass der Server die Daten vor der Weiterleitung behandelt.
Erweiterte Anmerkung: Sie könnten versuchen, die Umleitung innerhalb einer setTimeout-Funktion zu platzieren. Dies würde die Ausführung der Weiterleitung verzögern, sodass der Server die Übermittlung zuerst verarbeiten kann. Aber setTimeout benötigt eine feste Zeitmenge. Wenn die Datenbehandlung nicht synchron ist (dh asynchron), wird setTimeout nicht funktionieren, da es zu früh oder zu spät ausgelöst werden kann. Asynchrone Datenverarbeitung gilt, wenn die Datenverarbeitung eine unbestimmte Zeit benötigt (z. B. HTTP-Anforderungen).
Tags und Links javascript html google-spreadsheet google-form