как заставить новую FormData () работать в браузерах IE
Как я могу сделать эту работу в IE? Это не будет работать на IE, новый API FormData () не поддерживается браузерами IE, есть ли другой api, эквивалентный new FormData () в IE?
var fd = new FormData();
fd.append( "userfile", $("#userfile")[0].files[0]);
$.ajax({
url : '/user/ajax_upload/',
type: 'POST',
contentType:false,
cache: false,
data: fd,
processData: false,
beforeSend :function(){
},
success : function( data ) {
$('#popupbox').html(data);
}
});
4 ответов
лучше использовать jQuery form Js для отправки изображений через ajax. Я нашел это лучше, чем FormData()
<script type="text/javascript" src="/js/jquery.form.js"></script>
function update_professional_details(){
var options = {
url : '/validateform/personal',
type : $("#personal_edit_form").attr('method'),
dataType: 'json',
success:function( data ) {
var msg = data.msg;
if(data.status == 'success'){
$("#msg_data").html("Updated successfully, redirecting...")
$("#personal_edit_form").submit();
}else{
$('p[class$="_error2"]').html('');
var msg = data.msg;
$.each(msg, function(k, v) {
$('.'+k+'_error2').html(v);
});
}
},
};
$('#personal_edit_form').ajaxSubmit(options);
return false;
}
$('#updatepersonal').click(function(){
update_professional_details();
return false;
});
На самом деле я внес изменения в свой код, чтобы иметь возможность использовать $.ajax во всех других браузерах и просто сделал iframe для браузеров IE, подобных этому.
Мейлер.в PHP
<!--[if IE]>
<iframe src="form.php"></iframe>
<![endif]-->
<![if !IE]>
<script>
$(document).ready( function() {
//Program a custom submit function for the form
$("#form").submit(function(event){
//disable the default form submission
event.preventDefault();
//grab all form data
var formData = new FormData($(this)[0]);
$.ajax({
url: $("#form").attr('action'),
type: 'POST',
data: formData,
async: false,
cache: false,
contentType: false,
processData: false,
success: function (returndata) {
alert(returndata);
}
});
return false;
});
});
</script>
<?php include_once ('form.php'); ?>
<div id="email-success"></div>
<![endif]>
AFAIK это возможно только в IE9+. Чтобы загрузить файл "ajax like", вы должны использовать трюк iframe для этого. Я использовал это как источник при его реализации:
http://ramui.com/articles/ajax-file-upload-using-iframe.html
по-видимому, FormData не поддерживается в IE. Однако вы можете использовать сериализацию jQuery следующим образом:
var FD = $('form').serialize();