Javascript Post FormData在IE9中不起作用

Javascript Post FormData在IE9中不起作用,javascript,file,file-upload,Javascript,File,File Upload,以下代码不会将文件数据发布到IE9中的服务器 FormData()对象似乎是问题所在,但不确定如何解决 我使用了form.serialize(),但这不是上载文件 我很犹豫是否只为这个功能实现JQuery文件上传程序。 有没有一种简单的方法可以上传类似于FormData()的文件 //HTML 添加到购物车 //JS $(文档).on('click','addToCartButton',函数(事件) { var form_id=$(this).closest('form').attr('id')

以下代码不会将文件数据发布到IE9中的服务器

FormData
()对象似乎是问题所在,但不确定如何解决

我使用了
form.serialize()
,但这不是上载文件

我很犹豫是否只为这个功能实现JQuery文件上传程序。 有没有一种简单的方法可以上传类似于FormData()的文件

//HTML
添加到购物车
//JS
$(文档).on('click','addToCartButton',函数(事件)
{
var form_id=$(this).closest('form').attr('id');
var formElement=document.getElementById(form_id);
var odata=新的FormData(formElement);
//变量$form=$(“#”+表单id);
$.ajax({
网址:'http://localhost/cart/add',
数据:odata,/$form.serialize(),
键入:“POST”,
processData:false,//告诉jQuery不要处理数据
contentType:false//告诉jQuery不要设置contentType
}).完成(功能(数据)
{
var returnObject=jQuery.parseJSON(数据);
开关(返回对象状态){
成功案例:
警报(“商品添加到购物车”);
打破
案例“错误”:
警报(“发生错误”);
打破
案例“无文件”:
警报(“未检测到任何文件”);
打破
}                           
});
event.preventDefault();
}); 

这是因为IE9不支持它


完全相关:

是的,我发现IE9不受支持,但是如果没有FormData,我如何使用jQ/ajax上传文件?我看过fileupload LIB,但我还想添加其他表单项,而不仅仅是文件。我看到的大多数库都只是上传一个文件。我希望能够在单个请求中发布文件和其他表单数据
    // HTML
    <form name='aform' action='upload.php'>
           <input type='file' name='afile'>
           <input type='text' name='qty' value='1'>
           <input type='hidden' name='product_id' value='7'>
           <a class='addToCartButton'>Add to cart</a>
    </form>



    // JS
    $(document).on('click', '.addToCartButton', function(event) 
    {

        var form_id = $(this).closest('form').attr('id');

        var formElement = document.getElementById(form_id);

        var odata = new FormData(formElement);        

        //var $form = $('#'+form_id);

        $.ajax({
            url: 'http://localhost/cart/add',
            data: odata, //$form.serialize(),
            type: 'POST',
            processData: false,  // tell jQuery not to process the data
            contentType: false   // tell jQuery not to set contentType            
        }).done(function(data) 
        {

            var returnObject = jQuery.parseJSON(data);

            switch(returnObject.status) {
                case 'success':
                    alert('Item added to cart');
                    break;              
                case 'error':
                    alert('An error occured');
                    break;
                case 'no_file':
                    alert('No file was detected');
                    break;                                      
            }                           

        });

        event.preventDefault();
    });