Ajax上传表单数据和文件

目前遇到一个需求,ajax提交数据的同时上传文件, 发现FormData是一个很有用的属性。在mvc中以下代码直接将表单数据和上传的文件提交到一个Model,确实爽的不得了。

var TestTakerUI_form = $("#TestTakerUI_form");

         var url = TestTakerUI_form.attr('action');
        
         var form = document.getElementById("TestTakerUI_form")
         var fileObj = document.getElementById("LogoFile").files;
         var formdata =  new FormData(form);
        formdata.append("LogoFile", fileObj);
        
         var xhr;
         if (window.XMLHttpRequest) {
            xhr =  new XMLHttpRequest();
        }
         else {
            xhr =  new ActiveXObject("Microsoft.XMLHTTP");
        }
        xhr.open('POST', url,  true);
        xhr.onreadystatechange =  function (response) {
             if (xhr.readyState == 4) {
                 if (xhr.status == 200) {
                    $("#content_5").html(xhr.responseText);
                    
                }
            }
        };
        xhr.send(formdata);

     

服务端model,直接将文件传了过来,并且model里面包含了其他的表单属性

 

更多关于formdata的信息,请参考:https://developer.mozilla.org/en-US/docs/Web/API/FormData
 

但是Formdata并不是每种浏览器都支持,如下所示:

FeatureChromeFirefox (Gecko)Internet ExplorerOperaSafari
Basic support7+4.0 (2.0)10+12+5+
append with filename(Yes)22.0 (22.0)???

  因此,可以考虑其他上传组件:

http://www.uploadify.com/
http://jquery.malsup.com/form/,

http://www.phpletter.com/Demo/AjaxFileUpload-Demo/,

 http://www.fyneworks.com/jquery/multiple-file-upload/

 

 也可以google下uploader,发现可以用的组件还真是多啊!

转载于:https://www.cnblogs.com/jackhuclan/archive/2013/06/03/3114924.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值