最近項目涉及到附件上傳就頭痛,一直在用plupload插件在作。。。ie9偶爾抽風但仍是能夠的。。。html
而後有個需求,表格每行都有個上傳按鈕,頁面多上傳按鈕。html5
1、開始的時候,用plupload作的,多實例上傳ajax
將browse_button觸發按鈕,設置成數組,這種方法也能夠實現上述需求,可是ie9沒反應,,,我不知道什麼也不知道。。。
打印了一下,ie9 的runtime是html4,而後把上傳方式調換了順序,沒用。。。
上傳附件的時候,只執行了FilesAdded方法,不懂不懂
this.pluploader = new plupload.Uploader({ runtimes: 'html5,flash,silverlight,html4', //上傳方式 headers: {Accept: 'application/json; charset=utf-8'}, browse_button: arr, //觸發按鈕 url: this.uploaderUrl, flash_swf_url: '../common/lib/plupload/Moxie.swf', //flash上傳組件的地址 silverlight_xap_url: '../common/lib/plupload/Moxie.xap', multi_selection:false,//不可選擇多個文件同時上傳 filters: { max_file_size: '50mb' //限定文件大小 // prevent_duplicates: true, //是否容許選取重複文件,默認false爲容許 } });
之後我知道緣由會更新的。。。json
2、無奈,換了ajaxSubmit來作上傳,這個方法好久前被我拋棄了,由於在ie9,ajaxSubmit請求返回數據成功,可是不執行success回調函數。數組
今天終於找到緣由了,是返回數據的數據類型問題,ie9返回的數據是json字符串,不是對象。心累。app
設置請求參數 dataType:'text',就能夠進入success,將數據類型JSON.parse()轉成對象就好了。函數
this.$el.find("form"+'.'+targetClass).ajaxSubmit({ url: this.uploaderUrl, contentType: "application/x-www-form-urlencoded; charset=utf-8", dataType:'text', enctype:"multipart/form-data", method:"POST", type:"POST", data:obj, success: $.proxy(function (result, status) { if(typeof(result)==='string'){ result = JSON.parse(result) } if (result.success) { //上傳成功 } else {} },this),
error:function(res) {} });