Form OnSubmit warten, jQuery Ajax Return?
Will ich auslösen $.ajax
auf form onsubmit
und return true
nur nach Ajax zurück ist etwas gültig.
Beispiel:
<form id="myForm" onsubmit="return ajaxValidation();">
<input id="myString" name="myString" type="text" />
<input type="submit" value="Submit" />
</form>
In Javascript:
function ajaxValidation() {
$.ajax({
async: false,
type: "POST",
url: "ajax.php",
data: { myString: $("#myString").val() }
}).success(function( response ) {
alert(response); //Got 'ok'
if (response=="ok") {
return true; //mark-1
} else {
alert("Oh, string is wrong. Form Submit is cancelled.");
}
});
return false; //mark-2
}
Wenn ich behaupte, ich bekam alert ok
, aber es zurückgegeben, "false", da sprang es zu der definitiven return false
Linie.
Warum? Ich kann das nicht verstehen. Eigentlich sollte es Treffer zu return true
Linie. (Und, selbst nach return true
, die Funktion sollte aufhören, es und nur aus ihm heraus zu kommen)
So ist es nun heißt, die übergeordnete Funktion does NOT wait
auf der Ajax-Rückgabe. Stattdessen ist er ständig läuft nach unten bis zum Ende. Keine Ahnung warum, bitte. Wie man die parent-Funktion wartet die Ajax?
Es gibt nur eine Rückkehr, die Auswirkungen auf die ajaxValidation Funktion und das ist die eine mit der Aufschrift 2,der rest in einer anderen Funktion.
Ähnlich wie stackoverflow.com/questions/12171642/...
Ähnlich wie stackoverflow.com/questions/12171642/...
InformationsquelleAutor | 2013-01-26
Du musst angemeldet sein, um einen Kommentar abzugeben.
Da AJAX asynchron ist Ihre Validierung Würde besser funktionieren mit einem click-handler auf den submit-button.
Folgende basiert auf dem entfernen der inline -
onSubmit
OnSubmit
Veranstaltung.wird komplizierter, es zu tun auf diese Weise. Was ist der Grund für die Notwendigkeit zu verwenden
onSubmit
?weil, form
submit
Ereignis wird NUR gesteuert-durch/ abhängen-auf die Schaltfläche. Nicht die Realesubmit
Griff, der<form>
element.offensichtlich, es kann sein spam-bot, wenn Ihre Vorlage-Ereignis wird nur dann berücksichtigt, dass-Taste, das ist nicht das eigentliche Einreichen Griff.
OnSubmit
ist der Letzte handler, unabhängig von der form abgegeben wurde, durch drücken einer Taste oder schlagen Sie das in einem Textfeld eingeben oder auch durch die bot-Skripte. Ihre Art und Weise, die form submit nur dann berücksichtigt, dass der button, wo, wie, wenn ich drücken Sie die EINGABETASTE auf andere input-Felder? Wie wenn bots trigger the submit anyway?was bist du Rauchen? Sie können nicht Sie verlassen sich auf javascript zu schützen, nichts. Es kann deaktiviert werden, einfach durch den Benutzer, oder spammer können problemlos ausführen, Skript auf der Seite selbst und füllen Sie das Formular aus und senden Sie es, ohne etwas einzugeben, oder berühren Sie die Formular-Steuerelemente. Der einzige wirkliche Schutz ist auf dem server. Auch mit ajax-Validierung MÜSSEN Sie erneut überprüfen, alles wieder auf dem server
InformationsquelleAutor charlietfl
Return-Wert in mark 1 ist für Ihren Erfolg-Funktion der ajax-Anfrage, nicht für den validation-Funktion. Deshalb, auch wenn es gibt es gibt nur von dort und nicht von einer Validierung Funktion, die mark 2
$.ajax
? Ich meine,return $.ajax({......});
da von Anfang an, dann bewegenmark-2
in dieelse
block? Rücksendung der, gesamten Ajax-Rückgabe?InformationsquelleAutor Hanky Panky