Hier ist mein Testfall. Wenn das Formular abgeschickt wird, wird eine 500-Fehlerantwort gesendet. Wenn nicht, wird das Formular abgeschickt.
Wenn das Dateieingabe-Tag auskommentiert ist, wird der Error-Handler aufgerufen. Wenn das Dateieingabe-Tag vorhanden ist, wird der Error-Handler nicht aufgerufen. Ich denke, dies könnte etwas mit der Tatsache zu tun haben, dass jQuery einen iframe verwenden muss, um den Upload und iframes zu behandeln scheinen nicht auf den Error-Handler zu reagieren .
Bearbeiten: Wenn ich hinzufüge iframe: true
zu den Optionen, die an ajaxSubmit
um die Verwendung eines iframe zu erzwingen, funktioniert auch der Fall, dass keine Datei hochgeladen wird, es hat also definitiv mit dem iframe zu tun.
Edit2: Ich verwende die jQuery-Formular-Plugin .
<?php
if($_SERVER['REQUEST_METHOD'] == 'POST') {
header('HTTP/1.1 500 Internal Server Error');
die;
} else {?>
<html><head>
<script type='text/javascript'
src='http://ajax.googleapis.com/ajax/libs/jquery/1.4.2/jquery.min.js?ver=2.9.2'></script>
<script type='text/javascript'
src='http://github.com/malsup/form/raw/master/jquery.form.js?v2.43'></script>
<script type="text/javascript">
jQuery(document).ready(function() {
jQuery('a').click(function() {jQuery('form').ajaxSubmit({error: function(){alert('error handler called');}})});
});
</script>
</head><body>
<form method="POST">
<input type="text" name="mytext" />
<input type="file" name="myfile" /><!-- comment this element out -->
<input type="hidden" name="blah" value="blah" />
<a>submit</a>
</form>
</body></html>
<?php }
Gibt es eine Möglichkeit, den Fehler-Handler in beiden Situationen aufgerufen werden?