Nabend,
ich schon wieder. Jetzt hakts bei mir bezüglich des AJAX-Response. Erstens will mir partout keine vernünftige Auswertung des done() gelingen und zweitens weiß ich nicht, ob das eigentlich gut ist, wie ich das Formular absende. Ich gehe einfach mal meine Schritte durch. So sende ich mein Formular ab:
<form action="spieltag.php?saison_id=<?=$saison_id?>" onsubmit="return sendFormular();" method="post">
Das eigentliche Absenden wollte ich mit return false unterdrücken. Mit dem Rückgabewert aus sendFormular() wollte ich entscheiden, ob das Formular weiter angezeigt wird (bei fehlerhaftem AJAX-Request => return false) oder ob bei erfolgreichem AJAX-Request auf die action-Adresse weitergeleitet wird (return true).
Und so sieht mein JS-Funktion für den AJAX-Request aus. Ich habe mich dabei an das Beispiel von molily gehalten: http://forum.de.selfhtml.org/archiv/2012/9/t211124/#m1440363
function sendFormularAjax() {
var SpielerdatenStr = JSON.stringify(SpielerdatenArray);
return $.ajax({
url: 'sql/ajax_spielerstat.php',
type: 'post',
dataType: 'json',
data: {
str: SpielerdatenStr,
spieltag_id: <?=$spieltag_id?>
}
});
}
function sendFormular () {
sendFormularAjax.done(function() {
console.log('OK');
});
return false;
}
Damit habe ich jetzt mehrere Probleme:
1.) Ich bekomme folgende Fehlermeldung: "Uncaught TypeError: Object function send FormularAjax() ... has no method 'done'". Das mit der Registrierung des Erfolgs-Handlers funktioniert also bei mir irgendwie nicht. Rufe ich die Funktion sendFormularAjax() im onsubmit direkt auf, funktioniert zumindest der Request und der Eintrag der Formulardaten in die DB. Eine Erfolgs-Rückmeldung habe ich damit natürlich nicht.
2. Irgendwie funktioniert so auch meine Überlegung bezüglich Formularabsendung per return true/false nicht mehr, das Formular wird jetzt immer abgesendet und ich kann in der Konsole nicht mal mehr mein AJAX-Verarbeitungs-Script untersuchen.
Ursprünglich sah meine Funktion so aus, da wurde zumindest das Absenden des Formulars erstmal per return false unterdrückt und ich konnte alles schön untersuchen.
function sendFormular () {
var SpielerdatenStr = JSON.stringify(SpielerdatenArray);
var send = false;
$.ajax({
url: 'sql/ajax_spielerstat.php',
type: 'post',
dataType: 'json',
data: {
str: SpielerdatenStr,
spieltag_id: <?=$spieltag_id?>
}
}).done(function () { send = true; });
return send;
}
Das .done() hat hier aber auch nicht gegriffen, was ja wohl an der asynchronen Verarbeitung liegt, wie ich so halbwegs verstanden habe. Deswegen hatte ichs ja dann über molilys Beispiel versucht.
Das war jetzt vielleicht ein bißchen konfus, aber vielleicht kann trotzdem irgendwer weiterhelfen.
Gute Nacht erstmal.