jQuery Form Plugin - File uploads make the XHR have status 0

jQuery Form Plugin - File uploads make the XHR have status 0

With my current javascipt code I have successfully implemented jQuery Form Plugin with my own page. It hooks forms and submits them, and upon either failure or success the proper function is fired (success and error options of ajaxForm) and the XML is handled.

However, whenever I add a <input type="file"> my code fails to determine wether or not an error occured, since the HTTP code of the request seems to be set to 0, and thereby somehow being treated as "success" event, which it clearly isn't, as the PHP returning the XML sends a HTTP 400. (Firebug confirms this.)

Simply put, why does the file upload cause a 100% "success"-rate with HTTP status 0 where it shouldn't, and how could I work around this if required?

For source code of my part of the script, here it is:

forge.admin = {
    forms: {
        events: {
            submit: function(form) {
                console.info('Submitting form '+form);
            },
           
            error: function(xhr,form) {
                console.warn('Form submission failed of '+form);
               
                if (xhr.status == 400)
                    forge.admin.errors.parse(xhr.responseXML);
                else
                    forge.admin.errors.show('GENERIC');
            },
           
            success: function(xhr,form) {
                console.info('Submission of form '+form+' succeeded with HTTP status '+xhr.status);
            }
        },
       
        initiate: function() {
            // Create form handlers
            $('div#static form').each(function() {
                var form = $(this).attr('name');
                $(this).ajaxForm({
                    beforeSubmit: function() { forge.admin.forms.events.submit(form); },
                    dataType: 'xml',
                    error: function (xhr) { forge.admin.forms.events.error(xhr,form); },
                    success: function (xml,status,xhr,jqform) { forge.admin.forms.events.success(xhr,form); }
                });
            });
        }
    },
   
    errors: {
        parse: function(xml) {
            var id = $('message',xml).text();
            forge.admin.errors.show(id);
        },
       
        show: function(id) {
            $('.error').hide();
            $('#'+id+'.error').show();
        }
    }
}

Note that forge.admin.forms.initiate() is fired on page load.