Probleem is opgelost:
Ik had mijn submit knop het id en de name "submit" gegeven, waardoor ik blijkbaar de javascript functie submit van de browser overschreef. Nu met een nieuwe id en naam doet het script het top!
Orginele vraag:
Okay, het zit als volgt; Ik wil een formulier met ajax verzenden, dit gaat helemaal top met de jQuery.ajax functie. Nu wil ik alleen dat het formulier op de normale non-javascript manier wordt verzonden als er iets mis gaat tijden het ajaxen.
Hiervoor unbind ik het event wat de submit afhandelt zodra er een error is, alleen daarna kan ik met geen mogelijkheid het form meer submitten. Tenzij ik zelf nog een keer op de knop druk, wat ik dus wil automatiseren.
Een stukje code voor de duidelijkheid:
Het unbinden van de specifieke functie help ook niets, daarbij doet de submit() call ook domweg niets.
Overigens wil het submitten wel als ik geen unbind uitvoer van te voren, maar dan wordt handleSubmit nog eens aangeroepen. Opmerkelijk is hierbij dat, ook al geef ik true terug met handleSubmit bij de 2e call, het formulier niet wordt verzonden.
Hopelijk heeft iemand hier een goed idee/tip!
Ik had mijn submit knop het id en de name "submit" gegeven, waardoor ik blijkbaar de javascript functie submit van de browser overschreef. Nu met een nieuwe id en naam doet het script het top!
Orginele vraag:
Okay, het zit als volgt; Ik wil een formulier met ajax verzenden, dit gaat helemaal top met de jQuery.ajax functie. Nu wil ik alleen dat het formulier op de normale non-javascript manier wordt verzonden als er iets mis gaat tijden het ajaxen.
Hiervoor unbind ik het event wat de submit afhandelt zodra er een error is, alleen daarna kan ik met geen mogelijkheid het form meer submitten. Tenzij ik zelf nog een keer op de knop druk, wat ik dus wil automatiseren.
Een stukje code voor de duidelijkheid:
JavaScript:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
| $(document).ready(init); function init() { $('form.cform').submit(handleSubmit); } function handleSubmit (eventObject) { [...] // Mark this form as the active form // TODO: Ugly, can't we find the form in an other way in the callback? $(this).addClass('cformInProgress'); // Send AJAX request $.ajax(cache: false, data: $(this).serialize(), dataType: 'json', error: handleAjaxError, success: handleAjaxSuccess, timeout: 4000, type: 'POST', url: submitUrl}); return false; } function handleAjaxError (XMLHttpRequest, textStatus, errorThrown) { // Remove listners and submit $('form.cformInProgress').unbind(); $('form.cformInProgress').submit(); // <-- En deze doet dus domweg niets, ook geen fout in de console.. // Inform user and ask to do an old skool submit :( alert('Formulier verzenden is mislukt met de melding:\n' + textStatus + ' / ' + errorThrown + '\n\nProbeer het formulier nogmaals te verzenden.'); } handleAjaxSuccess : function (data, textStatus) {...} |
Het unbinden van de specifieke functie help ook niets, daarbij doet de submit() call ook domweg niets.
Overigens wil het submitten wel als ik geen unbind uitvoer van te voren, maar dan wordt handleSubmit nog eens aangeroepen. Opmerkelijk is hierbij dat, ook al geef ik true terug met handleSubmit bij de 2e call, het formulier niet wordt verzonden.
Hopelijk heeft iemand hier een goed idee/tip!
[ Voor 13% gewijzigd door Mac_Cain13 op 26-08-2009 22:32 . Reden: Oplossing gevonden! :) ]