Was würde dazu führen, dass ein Sitecore-Formular die Übermittlung dupliziert?

Nov 19 2020

Ich habe eine benutzerdefinierte Übermittlung basierend auf dem folgenden Modul erstellt:

https://www.nishtechinc.com/Blog/2018/April/Send-E-mail-Action-to-Sitecore-9-Forms

Auf meinem Entwicklungscomputer lief alles sehr gut, aber als ich in unsere Staging-Umgebung verschoben wurde, begann es zweimal zu senden und somit zwei E-Mails zu senden. Ich habe meinem benutzerdefinierten Code eine Protokollierung hinzugefügt, und es handelt sich definitiv um eine Übermittlung des gleichen Formulars wie SessionId, TemplateId usw., die alle identisch sind.

Während meines hektischen Googelns stieß ich auf die folgende Frage zum Stapeltausch, die wie das gleiche Problem aussieht, aber keine Antwort gab.

Sitecore 9 Forms Custom Submit Model wird zweimal aufgerufen

Das Bit, das mir fehlt, ist das, was zwischen dem gesendeten Formular und dem Ausführen der Ausführungsmethode für meine Übermittlungsaktion passiert. Alle Hinweise, wo ich Fehler beheben kann, wären großartig.

Ich bin mit dem oben genannten verblüfft, daher wäre jede Hilfe sehr dankbar. Bitte lassen Sie mich wissen, wenn weitere Informationen benötigt werden.

Prost

Shaun

Ps Ich stelle zum ersten Mal eine Frage zu StackExchange. Bitte teilen Sie mir mit, ob meine Frage klarer und / oder hilfreicher hätte sein können.

Antworten

VladIobagiu Nov 19 2020 at 23:13

Nehmen Sie die nächsten Änderungen vor: Öffnen Sie die Datei \ Views \ FormBuilder \ Form.cshtml .

Fügen Sie die folgenden Zeilen über dem </script>Tag hinzu:

jQuery.fn.preventDoubleSubmission = function() {
 $(this).on('submit',function(e){ var $form = $(this); if ($form.data('submitted') === true) {
                  alert('The form is already submitted. Please wait.');
                  e.preventDefault();
                  $form.find(':submit').attr('disabled','disabled'); } else { if($form.valid()) {
                                                $form.data('submitted', true); } } }); return this; }; $("form[data-sc-fxb='@Model.ItemId']").preventDoubleSubmission();

Dies dient zum Testen und verhindert die zweimalige Übermittlung.

Bitte überprüfen Sie auch, ob die Formulare nicht im Kopf der Seite hinzugefügt wurden. Es ist seltsam, warum sie zweimal gesendet werden.

AlinaFodor Dec 03 2020 at 18:48

Ich hatte einige Probleme beim Senden von Sitecore-Formularen, als Ajax aktiviert war (jedoch keine Duplizierung). Die Lösung bestand darin, Folgendes zu bearbeiten: \ Views \ FormBuilder \ Form.cshtml und @ Html.RenderFormStyles () über der Formulardefinition und @ Html.RenderFormScripts () unter der Formulardefinition wie folgt hinzuzufügen :

@Html.RenderFormStyles()

@{
    using (Html.BeginRenderRouteForm(Model, IsPost))
    {
        @Html.AntiForgeryToken()
        @Html.Hidden(AttributeNames.FormItemId, Model.ItemId)
        @Html.ValidationSummary(true)
        @Html.RenderFields(Model)
        <input type="hidden" data-sc-fxb-condition value='@Html.RenderConditions(Model)' />
    }
}

@Html.RenderFormScripts()