• Das Erstellen neuer Accounts wurde ausgesetzt. Bei berechtigtem Interesse bitte Kontaktaufnahme über die üblichen Wege. Beste Grüße der Admin

[FRAGE] Weiterleitung nach Formularversand

Scriptbeginner

New member
Hallo zusammen,

ich habe ein Formular, was mithilfe eines js versandt wird. Nun will ich nach dem Versenden auf eine URL weiterleiten und ich vermute stark, dass ich das in der js-Datei angeben muss. Die für den Versand verantwortliche Funktion sieht so aus:

HTML:
function formSubmit(){
				$('[data-constraints]',form).trigger('validate.form')
				
				if(!$('label.'+opt.invalidClass+',label.'+opt.emptyClass,form).length){					
					$.ajax({
						type:"POST"
						,url:opt.mailHandlerURL
						,data:{
							anrede:getValue($('label.anrede select'))
              ,vorname:getValue($('label.vorname input'))
              ,name:getValue($('label.name input'))
							,strasse:getValue($('label.strasse input'))
              ,nummer:getValue($('label.nummer input'))
							,plz:getValue($('label.plz input'))
              ,ort:getValue($('label.ort input'))
              ,land:getValue($('label.land select'))
							,email:getValue($('label.email input'))
							,anzahl:getValue($('label.anzahl select'))
							,gesamtpreis:getValue($('label.gesamtpreis input'))
							,gesamtsumme:getValue($('label.gesamtsumme input'))
             	,message:getValue($('label.message input'))
              ,zahlungsart:getValue($('label.zahlungsart select'))
							,owner_email:opt.ownerEmail||'#'
							,stripHTML:opt.stripHTML
						}
						,success: function(e){							
							form.addClass(opt.successClass)
							setTimeout(function(){
								form
								.removeClass(opt.successClass)
								.trigger('reset')
							},opt.successShowDelay)
						}
					})					
				}				
				return false
			}

Der Teil mit "success" sagt, was nach dem Absenden passiert, richtig? Jedenfalls wird da eine Meldung aufgerufen, dass die Nachricht erfolgreich übertragen wurde und ich gehe davon aus, dass das dort steht. Wenn ich jetzt möchte, dass statt der Meldung auf eine URL weitergeleitet wird, muss ich das dort eintragen? Und wenn ja, mit welchen Befehlen?

Schon mal danke vorab.
 
Zuletzt bearbeitet von einem Moderator:
Wenn nach dem Formular sowieso eine ganz neue Seite angezeigt werden soll, wofür machst du es dann mit Ajax anstatt mit einem normalen Formular? Ajax benötigt man ja nur, wenn kein Seiten Reload passieren soll, ansonsten sehe ich da keinen Sinn drin.
 
Danke für den Hinweis. Ich muss dazu sagen, dass ich das so aus meinem gekauften Template übernommen habe. Und es funktioniert soweit gut, nur will ich jetzt auf eine neue Seite weiterleiten, da dort eine Auswahl für die Zahlungsvarianten erfolgen soll. Kann man das trotz Ajax-Einsatz machen oder muss ich das komplett umbauen?
 
Doch, das geht ganz einfach: Im success-Callback notieren: window.location.href = "dein_linkziel";
Und das andere kannst Du löschen.
 
Ja Vorsicht! Das Formular wird doch serverseitig nochmal geprüft. Und wenn etwas falsch ist? Wenn du jetzt im success Zweig hart weiter leitest kannst du dem Benutzer keine Möglichkeit der Korrektur mehr anbieten.
Was passiert denn jetzt im Moment, wenn das Formular einen Fehler hat? Man sieht das im geposteten Code nicht.
 
Zurzeit ist es so: Wenn Pflichtfelder nicht ausgefüllt oder unzulässige Werte eingegeben werden, bleibt der Nutzer auf der Seite und unter den entsprechenden Feldern werden Sternchentext mit "notwendige Angabe" oder "ungültige Eingabe" angezeigt. Das wird, glaube ich, über die zweite Codezeile und eine weitere Funktion geregelt.

Würde die Änderung im Success-Callback bedeuten, dass da nur folgendes steht?:

HTML:
,success: function(e){							
window.location.href = "[I]dein_linkziel[/I]";
}
 
Zuletzt bearbeitet von einem Moderator:
Das hat leider nicht funktioniert. Beim Absenden wurde weiterhin nur die Success-meldung angezeigt und man bleibt auf der Seite mit dem Formular.
 
Vielleicht ist das die falsche Stelle. Gibt es mehrere Scripte auf der Seite?
Oder schau mal, ob in der Konsole eine Meldung steht. Die öffnet man mit F12.
 
Zurück
Oben