最近編寫了一個上傳文件的功能,支持ie9+.因此選用了 jQuery-File-Upload。可是在IE9測試時,產生了麻煩的問題,在這裏記錄一下。html
股務端接口要返回text/html
文件。由於ie9不認識application/json格式的。在IE9下面,會彈出下載的問題。jquery
在我修改過程當中,後端同窗說改了,而後我很信任它。而後改事後,仍是有下載的問題。不知道所措,最後發現是後端沒有修改爲功。。。git
首先,在文件的加載上。代碼以下github
const fileList = ((pathFix) => {return [ `${pathFix}/jqueryuploader/vendor/jquery.ui.widget.js`, `${pathFix}/jqueryuploader/jquery.fileupload.js`, ...(laterIE ? [`${pathFix}/jqueryuploader/cors/jquery.xdr-transport.js`] : []), `${pathFix}/jqueryuploader/jquery.iframe-transport.js`, ]; })('/static/static');
上面是我下載的文件列表。在ie9下面,多加載了一個jquery.xdr-transport.js
文件。chrome
其次,是在配置方面json
$(fupload).fileupload({ url: server.dataPoiUpload, dataType: 'json', autoUpload: true, formData: {geotable_id: geotableId, sn: mStore.getSN(), user: mStore.getUsername()}, sequentialUploads: true, done: function(e, cdata) { var result = cdata.result; const data = ((rdata) => { return typeof rdata === 'object' ? rdata : JSON.parse(rdata); })(result); }, progressall: function(e, data) { console.log('update progressall'); var progress = parseInt(data.loaded / data.total * 100, 10); self.setState({ 'progress': progress }); }, change: function() { self.setState({ status: 'updating', uploadBtn: false }) console.log('upload change'); }, success: function(cdata, status, object) { const data = ((cd) => { return typeof cd === 'object' ? cd : JSON.parse(cd); })(cdata); } }).error(function() { console.log(arguments, 'error'); });
上面主要是在配置方面。主要注意幾點:1,設置dataType. 2, success返回值時,chrome與ie返回值格式不同。這裏作一判斷後端
以上是主要的關鍵點。留作總結,但願能幫助也在使用此組件的人app