如何在IE上完成这项工作? 这不适用于IE浏览器,IE浏览器不支持新的FormData()API,是否有其他api等同于IE中的新FormData()?
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);
}
});
答案 0 :(得分:5)
最好使用jquery形式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;
});
答案 1 :(得分:4)
实际上我对我的代码进行了更改,以便能够在所有其他浏览器中使用$ .ajax,并为这样的IE浏览器制作了iframe。
mailer.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]>
form.php的
<form id="form" action="form-exec.php" target="_self" method="post" enctype="multipart/form-data">
<input type="text" name="email-to" value="" />
<input type="text" name="email-subject" value="" />
<input type="text" name="email-message" value="" />
<input type="file" name="file" />
<input type="file" name="file2" />
<button type="submit" name="email-send">Skicka</button>
</form>
,在我的例子中,form-exec.php是我的PHPmailer发件人!
答案 2 :(得分:1)
AFAIK只能在IE9 +中使用。 要上传文件'ajax like',你应该使用iframe技巧。 我在实现它时使用它作为源:
http://ramui.com/articles/ajax-file-upload-using-iframe.html
答案 3 :(得分:-3)
显然,IE中不支持FormData。但是,您可以像这样使用jQuery的序列化:
var FD = $('form').serialize();