问题
i checked some questions regarding the same issue, blueimp jquery file upload - "done", "complete" callbacks not working for IE 9 , but even after putting my Content-Type as 'text/html' as the response the 'done' callback isn't being fired. Also as the jQuery-File-Upload says i need to have a redirect to get the uploaded file (https://github.com/blueimp/jQuery-File-Upload/wiki/Cross-domain-uploads) after the upload is done, but that isn't also being done. Any help would be appreciated. Regards.
回答1:
The most voted answer isn't the best solution and can throw errors. Actually, setting dataType
isn't recommended for IE < 10, from this (awesome) article:
When the dataType option is set to text, json, html, or script, the iframe transport performs some processing of the response. Because it is operating on a DOM object obtained from the iframe it uses, however, and not the raw HTTP response data, there is the potential for some surprises to pop up.
http://missioncriticallabs.com/blog/2012/04/lessons-learned-from-jquery-file-upload/
Real solution:
The "thing" about not firing in IE < 10 isn't related with dataType
, is just the lack of callback add
that forces the file push in fileupload event.
$('#file_file').fileupload({
add: function (e, data) {
data.submit(); //this will 'force' the submit in IE < 10
},
done: function (e, data) {
alert('Done');
}
});
回答2:
ok so i go it working.The problem was that in the fileuploader configuration i had
dataType: 'json'
but since IE9 uses the iframe it makes a html request, and the response has the Content-Type 'text/html'. With that configuration the fileuploader is expecting to receive a json response so my response was going to a fail callback i made just for testing. Got it working by looking at this post jQuery FileUpload doesn't trigger 'done'
来源:https://stackoverflow.com/questions/19300804/jquery-file-upload-not-firing-done-callback-in-internet-explorer-ie9